Fortlaufende Dateinummerrierung...



  • FILE *ptr;
    char Name[81];
    nr=1;
    
    while (nr<10)
    {
     sprintf(Name,"c:\\schule\\test%d.txt",nr); //String zusammensetzen
     ptr = fopen(Name,"w"); //Datei mit zusammengesetztem Namen öffnen
     [...]
    


  • Ortus schrieb:

    in nem andern forum kam der vordschlag:

    while (nr<10)
    datei="test";
    datei=datei+IntToStr(nr);
    datei=datei+"txt";
    .
    .
    .
    

    geht aber auch net...

    Das kann nur gehen, wenn "datei" vom Typ std::string ist und du dir die Funktion "IntToStr()" selbst schreibst.



  • jop funzt so, danke

    nur ein prob hab ich noch....

    wenn ich bei der eingabe einen leerschlag habe, werden die getrennt teile in 2 verschiedene Files gespeichert.

    wenn ich zb "der mensch" eingebe wird "der" in ein file und "mensch" in ein anderes file gespeichert.

    wobei ich da wlh in dem fall auch die sprintf() funktion nützen kann... oder?



  • weiss nich...



  • scanf liest nur bis zur nächsten Leerstelle. Nimm besser fgets..



  • Ortus schrieb:

    wenn ich bei der eingabe einen leerschlag habe, werden die getrennt teile in 2 verschiedene Files gespeichert.

    wenn ich zb "der mensch" eingebe wird "der" in ein file und "mensch" in ein anderes file gespeichert.

    wobei ich da wlh in dem fall auch die sprintf() funktion nützen kann... oder?

    sprintf() wird hier nichts nutzen. fgets in Verbindung mit fprintf ist schon das Richtige.



  • öhm wenn ich den scanf() durch den fgets() ersetzte meint bekomm ich n error...

    Can nit convert char[100] to int

    ...

    schonma danke für die hilfe 🙂



  • Die Funktion erwartet ja auch andere Parameter:

    char *fgets( char *string, int n, FILE *stream );

    string: Storage location for data

    n: Maximum number of characters to read

    stream: Pointer to FILE structure



  • öhm das ist mir jetzt zu hoch Oo

    😞

    aso ich meine was ich jetzt wo einsezten muss



  • also ich hab keinen error mehr.... aber ich kann nix eingeben

    fgets(text,100,ptr);
    


  • öhm ne ganz andere frage. mach das mit dem fgets später....

    also hier mal der code:

    //Bibliotheken einbinden
    #include <stdio.h>                                                               //Einlesen der Bibliothek stdio.h
    #include <conio.h>                        //Einlesen der bibliothek conio.h
    
    //Programm anfang
    main()
    {
    clrscr();                           //Bildschirm Löschen
    
    //vatiabeln setzen
      char text[100];                        //Variabeln erstellen....
      char datei[100];
      int c;
      int nr;
      char y;
      FILE *ptr;
      nr=1;                                                  //....Variabeln erstellen.
    while (nr<10)                                              //While schlaufe beginnen
    {
    
      sprintf(datei,"c:\\schule\\test%d.txt",nr);                    //String zusammensetzen
      ptr = fopen(datei,"w");                                        //Datei mit zusammengesetztem Namen öffnen
      if (0 == ptr) printf("FEHLGESCHLAGEN\n");                  //Überprüfung des Dateistreams
      else printf ("Datei erfolgreich geoefnet!\n");            //Überprüfung des dateistreams 
      printf("Geben sie bitte den Text ein.\n");               //Eingabeaufforderung      
      scanf("%s",&text);                                         //Texteingabe   
      fprintf (ptr, "%s",text);                                      //Schreiben der Datei   
      if (0 == ptr) printf ("Datei konnte nicht geschrieben werden!!!\n\n");   //Überprüfung des Dateistreams
      else printf("Datei erfolgreich geschrieben!\n\n");            //Überprüfung des Dateistreams
      nr++;
      printf("Wollen sie eine weitere Datei erstellen? (Y=Yes N=No");      //Eingabeaufforderung Y oder N      
      scanf("%d",&y);
      if ((y!=y) && (y!=n)) printf("Sie haben weder Y noch N eingegeben!");      //Eingabeverarbeitung
      return 0;
      }
    printf ("Alle Dateien wurden erstellt!\n");
    
    getch();                           //Auf Taste warten
    return 0;
    }
    

    wie ihr wohl seht will ich eine if abfrage machen die die variabel y abfragen.
    nun ob soi true oder false is is ja einfach, aber wie kann ich sie mit einem buchstaben vergleichen?

    und ist es möglich das wenn ich weder Y noch N eingebe, dass ich dann auf folgende zeile zurück springe....

    printf("Wollen sie eine weitere Datei erstellen? (Y=Yes N=No");
    

    oder wenn ich n drücke dass ich dann das prog beende bzw zum letzten getch() springe?
    zurückgesprungen wird?



  • while(nr<=10)
    {
      int cnt=false;
      //...
      while(!cnt)
      {
        char ans;
        printf("Nochmal?\n");
        scanf("%c",&ans);
        switch(ans)
        {
        case 'y':case 'Y':cnt=true;break;//verlässt Frageschleife
        case 'n':case 'N':nr=11;cnt=true;break;//verlässt beide Schleifen
        default:continue;//zurück zur Frage
        }
      }
    }
    


  • hab jetzt anders gelöst...

    jetzt muss ich nur noch scanf ersetzen dann is es ok 🙂

    //Bibliotheken einbinden
    #include <stdio.h>                                                            	//Einlesen der Bibliothek stdio.h
    #include <conio.h>								//Einlesen der bibliothek conio.h
    
    //Programm anfang
    main()
    {
    clrscr();									//Bildschirm Löschen
    
    //vatiabeln setzen
      char text[100];								//Variabeln erstellen....
      char datei[100];
      int c;
      int nr;
      char y;
      char esc;
      FILE *ptr;
      nr=1;
      y='y';										//....Variabeln erstellen.
    do									               //While schlaufe beginnen
     {
    
      sprintf(datei,"c:\\schule\\version%d.txt",nr);           			//String zusammensetzen
      ptr = fopen(datei,"w");                               			//Datei mit zusammengesetztem Namen öffnen
      if (0 == ptr) 
     {  
     printf("Die Datei konnte nicht erstellt werden.\nDas program wird beendet\n");
     break;
     }					
      else printf ("Datei erfolgreich geoefnet!\n");				//Überprüfung des dateistreams
      printf("Geben sie bitte den Text ein.\n");					//Eingabeaufforderung
      scanf("%s",&text);								//Texteingabe
      fprintf (ptr, "%s",text);							//Schreiben der Datei
      if (0 == ptr) 
      { 
      printf ("Datei konnte nicht geschrieben werden!!!\n\n");
      printf ("Drücken \"N\" zum neustarten, oder \"B\" zum beenden des Programms.");
      esc=getch();
      if ((esc=='b') || (esc=='B')) break;
      }
      else printf("Datei erfolgreich geschrieben!\n\n");				//Überprüfung des Dateistreams
      fclose (ptr);
      nr++;
       do
       {
        printf("Wollen sie eine weitere Datei erstellen? \(Y=Yes N=No\)\n\n");		//Eingabeaufforderung Y oder N
        y=getch();
        if ((y!='y') && (y!='n') && (y!='Y') && (y!='N'))
        printf("Sie haben weder Y noch N eingegeben!\n\n");		//Eingabeverarbeitung
       } while ((y!='y') && (y!='n') && (y!='N') && (y!='Y'));
     } while ((y=='y') || (y=='Y'));
    printf ("Alle Dateien wurden erstellt!\nDas Programm wird beendet!");
    
    getch();									//Auf Taste warten
    return 0;
    }
    


  • Hey.. du hast eh keine Ahnung.. such dir ne Brücke und fertig!


Anmelden zum Antworten