fgetc, prüft EOF
Im BuchLinux-Systemprogrammierung Ich habe einige davon gelesen:
fgetc
Liefert das gelesene Zeichen alsunsigned char
Besetzung anint
oderEOF
am Ende der Datei oder Fehler. Ein häufiger Fehler bei der Verwendung vonfgetc
ist:
char c;
if ((c = fgetc()) != EOF) {...}
Die richtige Version dieses Codes lautet:
int c;
if ((c = fgetc()) != EOF) { printf("%c", (char)c); ... }
Warum kann ich einen Rückgabewert nicht auf "" setzen?char
vor dem Vergleich mitEOF
? Warum muss ich vergleichenEOF
genau mitint
? WieEOF
definiert als-1
ist es normalerweise nicht gegossenchar
?
Gibt es Plattformen / Compiler, auf denen dies nicht zutrifft?