Bonjour,

Dans le livre de K&R Norme ANSI il y a un programme très simple qui est le suivant :

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 ();
    }
}
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.

Le programme ne termine donc pas!

De plus dans le livre il est écrit :

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 ...
On dirait qu'ils considèrent que l'entrée standart c'est un fichier!
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