J'ai lu dans le livre du langage de programmation C de Dennis Ritchie qui int
doit être utilisé pour qu'une variable contienne EOF - pour la rendre suffisamment grande pour qu'elle puisse contenir une valeur EOF - non char
. Mais le code suivant fonctionne bien:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Lorsqu'il n'y a plus d'entrée, getchar
renvoie EOF. Et dans le programme ci-dessus, la variable c
, de type char, est capable de la maintenir avec succès.
Pourquoi ça marche? Selon l'explication dans le livre mentionné ci-dessus, le code ne devrait pas fonctionner.
0xff
. Le stockage du résultat de getchar()
dans int
résout ce problème. Votre question est essentiellement la même que la question 12.1 de la FAQ comp.lang.c , qui est une excellente ressource. (En outre, cela main()
devrait l'être int main(void)
, et cela ne ferait pas de mal d'en ajouter un return 0;
avant la clôture }
.)