In dem Buch Überprüfung Linux-System Programmierung Ich habe einige wie folgt lesen:fgetc, EOF
fgetc
gibt die alsunsigned char
Guss lesen Charakter einerint
oderEOF
auf Dateiende oder Fehler. Ein häufiger Fehlerfgetc
Verwendung ist:char c; if ((c = fgetc()) != EOF) {...}
Die richtige Version dieses Codes ist:
int c; if ((c = fgetc()) != EOF) { printf("%c", (char)c); ... }
Also, warum nicht ich warf einen Rückgabewert char
vor mit EOF
vergleichen? Warum muss ich EOF
genau mit int
vergleichen? Wie EOF
definiert als -1
, ist es nicht normalerweise zu char
gegossen?
Gibt es Plattformen/Compiler, wo es nicht stimmt?
möglich duplikat von ["while (! Feof (datei))" ist immer falsch] (http://stackoverflow.com/questions/5431941/while-feof-file-isal-ways-wrong) – jww
@jww: Diese Frage verwendet nicht 'feof()', also ist es kein Duplikat von "[' while (! feof (Datei)) 'ist immer falsch] (http://stackoverflow.com/questions/5431941/what-feof- Datei-ist-immer-falsch) ". –