in Datei speichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • in Datei speichern

    Hi! Hab schon mein nächstes Problem.
    Folgendes Stück Code liest eine Datei aus (source.txt) und schreibt den Inhalt mit Zeilennummern versehen auf stdout.
    Zusätzlich, ich bin nach x Versuchen noch immer nicht draufgekommen, soll das, was auf dem Bildschirm steht (also der Inhalt von source mit Zeilennummern)in einer datei namens result gespeichert werden.
    Kann mir da bitte jemand helfen? Thx!

    int zeilennr(void){

    int line;
    char buffer[256];
    FILE *source;

    if (( source = fopen("source.txt","r" )) == NULL )
    {
    fprintf( stderr, "Fehler beim Öffnen der Datei, %s!");
    return 0;
    }

    line = 1;

    while( fgets( buffer, 256, source ) != NULL )
    fprintf( stdout, "%4d:\t%s", line++, buffer );
    printf("\n\n");

    fclose(source);
    return 0;
    }


    int main(void){

    zeilennr();

    return 0;
    }
  • Die Variante hab auch schon probiert und müsste eigentlich funktionieren, aber in der Datei result steht dann immer nur eine Zeile mehr als als in source und der Inhalt der vorigen (letzten) Zeile.

    Beispiel stdout:
    1: axxxxxxxx
    2: bxxxxxxxxxxx
    3: cxxx
    4: dxxxxx
    5: exxxxxxxxx

    in result.txt steht dann nur:
    6: exxxxxxxxx
  • ganz einfach:

    Quellcode

    1. int zeilennr(void); // Prototyp nicht vergessen

    Quellcode

    1. FILE *source, *result; // zwei Dateien

    Quellcode

    1. result = fopen("result.txt", "w"); // zweite Datei öffnen

    Quellcode

    1. while(fgets(buffer, 256, source) != 0)
    2. {
    3. fprintf( stdout, "%4d:\t%s", line, buffer ); // line+buffer nach stdout
    4. fprintf( result, "%4d:\t%s", line, buffer ); // line+buffer nach result
    5. line++; // Inkrement am Ende
    6. }

    Quellcode

    1. fclose(result); // zweite Datei schliessen


    fertig.