Bonjour,
Dans le livre de K&R Norme ANSI il y a un programme très simple qui est le suivant :
Seulement sur ma machine la valeur de EOF est -1 et par conséquent, comme getchar lit caractère par caractère quand je rentre -1, il me lit dabord '-' puis '1' et donc la condition c !=EOF est toujours vraie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 main () { int c; c = getchar (); while (c != EOF) { putchar (c); c = getchar (); } }
Le programme ne termine donc pas!
De plus dans le livre il est écrit :
On dirait qu'ils considèrent que l'entrée standart c'est un fichier!Le problème est de détecter la fin de données en entrée. La solution est que getchar retourne une valeur particulière lorsqu'il n'y a plus rien en entrée, une valeur que l'on ne puisse pas confondre avec un vrai caractère. Cette valeur s'appelle EOF ...
Or mon entrée standart c'est mon terminal. Donc a quelle moment le programme sait qu'il n'y a plus rien en entrée puisque je peux tjrs écrire dans la console?
j'espère que vous m'avez compris! Merci d'avance
Partager