fgetc, comprobando EOF
En el libroProgramación del sistema Linux He leído algo como esto:
fgetc
devuelve el carácter leído comounsigned char
lanzar a unint
oEOF
Al final del archivo o error. Un error común usandofgetc
es:
char c;
if ((c = fgetc()) != EOF) {...}
La versión correcta de este código es:
int c;
if ((c = fgetc()) != EOF) { printf("%c", (char)c); ... }
Entonces, ¿por qué no puedo emitir un valor de retorno achar
antes de comparar conEOF
? ¿Por qué tengo que comparar?EOF
exactamente conint
? ComoEOF
definido como-1
, no es normalmente casteado achar
?
¿Hay plataformas / compiladores donde no es cierto?