1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
1er "parcours":
+-----Etape-----+----Entrée clavier-----+-----Etat du buffer de stdin----+
| 0 | (au début) | vide |
| 1 | ^z | ^z |
+---------------+-----------------------+--------------------------------+
1)Dans ce cas "scanf("%c",&c1);" bloque en attendant une frappe clavier valide
+--------------+-------------------------+-------------------------------+
| 2 | a | a^z |
+--------------+-------------------------+-------------------------------+
2)la frappe est valide, "scanf("%c",&c1);" prélève le a
+---------------------+-------------------------------+------------------+
| 3 | | ^z |
+---------------------+-------------------------------+------------------+
"feof" repère le "^z", ça affiche: "a 16" (donc EOF détecté), tout est normal.
Autre parcours:
+-----Etape-----+----Entrée clavier-----+-----Etat du buffer de stdin-----+
| 0 | (au début) | vide |
| 1 | a^z | a^z |
+--------------------+----------------------------+-----------------------+
1)Ici la frappe est valide donc "scanf("%c",&c1);" prélève le a.
+---------------+------------------------+-------------------------------+
| 2 | | ^z |
+---------------+------------------------+-------------------------------+
2)Mais l'affichage:a 0 (EOF non détecté) alors que devant se trouver dans le buffer. |