Leí en el libro The C Programming Language de Dennis Ritchie que int
debe usarse para que una variable contenga EOF, para que sea lo suficientemente grande como para que pueda contener el valor EOF, no char
. Pero el siguiente código funciona bien:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Cuando no hay más entrada, getchar
devuelve EOF. Y en el programa anterior, la variable c
, con el tipo char, puede mantenerlo con éxito.
¿Por qué funciona esto? Según la explicación en el libro mencionado anteriormente, el código no debería funcionar.
0xff
. Almacenar el resultado de getchar()
un int
resuelve ese problema. Su pregunta es esencialmente la misma que la pregunta 12.1 en las preguntas frecuentes de comp.lang.c , que es un excelente recurso. (Además, main()
debería ser int main(void)
, y no estaría de más agregar un return 0;
antes del cierre }
.)