Mit fgets aus Datei lesen (Rekursiv)
-
Ja eigentlich eher aus.
Vielen Danke für die schnelle Antwort, dann weis ich bescheid.
-
Eher aus?!
FILE* ist ein Zeiger auf eine Struktur, diese speicherte die Dateizeigerposition. Die Rekursion ist der Struktur egal.
void recureader(FILE* fp) // Output Inverter :D { char buf[1024] = {0}; if( feof(fp) ) return; fgets(buf, sizeof(buf), fp); recureader(fp); printf("%s", buf); } int main() { FILE* fp = fopen("test.txt", "r"); if( NULL == fp ) return 0; recureader(fp); fclose(fp); getchar(); return 0; }
-
Das mit dem auslesen sollte am Ende das Programm machen können bei mir.
Danke nochmal für das anschauliche Programm.
-
void recureader(FILE* fp) // Output Inverter :D { char buf[1024] = {0}; if( feof(fp) ) return; fgets(buf, sizeof(buf), fp); recureader(fp); printf("%s", buf); } int main() { FILE* fp = fopen("test.txt", "r"); if( NULL == fp ) return 0; recureader(fp); fclose(fp); getchar(); return 0; }
Undefiniertes Verhalten, da feof nur gültige Werte liefert NACH einer Leseaktion.
-
Wo hast du denn diese Weisheit her, im Standard finde ich sie jedenfalls nicht.
Siehe ruhig auch hier http://www.cplusplus.com/reference/clibrary/cstdio/feof/, wie feof benutzt wird.
-
Edit: verlesen.
-
Wutz schrieb:
Undefiniertes Verhalten, da feof nur gültige Werte liefert NACH einer Leseaktion.
ISO/IEC 9899:1999 7.19.5.3 (7) schrieb:
When opened, a stream is fully buffered if and only if it can be determined not to refer to an interactive device. The error and end-of-file indicators for the stream are cleared.
und
ISO/IEC 9899:1999 7.19.10.2 (2-3) schrieb:
2 The feof function tests the end-of-file indicator for the stream pointed to by stream.
3 The feof function returns nonzero if and only if the end-of-file indicator is set for stream.
-
-
Wutz schrieb:
Da ist von undefiniertem Verhalten nirgendwo die Rede. Aber selbst, wenn deine Quelle deinen Fehler gemacht hätte, wäre der Standard autoritativ.
-
Wutz schrieb:
Undefiniertes Verhalten, da feof nur gültige Werte liefert NACH einer Leseaktion.
du hast keinen überblick über diese konstellation.