fgets() - letztes Zeichen?



  • Hallo,

    ich moechte Zeichen aus einem File lesen. Eine Zeile, daher sollte fgets() dienlich sein. Ich bin mir nur nicht sicher, was fgets() nun alles einliest.

    Beispiel:

    Datei test.dat enthalte:
    1234

    char str[20];
    FILE *fileHandle;
    
    fileHandle = fopen("test.dat", "r");
    fgets(str, 20, fileHandle);
    

    Was befindet sich nun in str[]?
    a) 1|2|3|4|\n|\0
    b) 1|2|3|4|\0

    Besten Dank im Voraus,
    Dr. Goebel



  • a) denke ich trifft zu, wenn du auf binärer ebenen, also mit systemfunktionen arbeitest

    b) denke ich trifft zu, wenn du mit funktionen wie fscanf fgets usw. arbeitest.



  • horc schrieb:

    char str[20];
    FILE *fileHandle;
    
    fileHandle = fopen("test.dat", "r");
    fgets(str, 20, fileHandle);
    

    Was befindet sich nun in str[]?
    a) 1|2|3|4|\n|\0

    Das sollte eigentlich in der Doku zu fgets stehen. Wenn als letztes Zeichen vor dem \0 ein Newline steht, dann weißt Du, daß die ganze Zeile in den Puffer paßt. Wenn nicht, dann kannst Du den Puffer zB per realloc vergrößern und den Rest auch noch hineinlesen, bis Du ein \n gefunden hast, oder nur noch EOFs kommen.


Anmelden zum Antworten