Bonsoir,
J'ai remarqué que la lecture au clavier, en langage C, pose souvent des problèmes, surtout dans le cas de la lecture d'entiers : quand on doit entrer un entier au clavier, et que celui qui execute le programme tape quelque chose avec au moins une lettre,l'entier prend une valeur bizarre(toujours la même : 1075028800).
Mais c'est encore pire quand la lecture de l'entier se situe dans une boucle : dans ce cas,il suffit de lire une fois une mauvaise valeur au clavier pour le programme boucle ensuite indéfiniment sans jamais rendre la main à l'utilisateur.

Le programme ci-dessous est censé lire un entier au clavier jusqu'à ce que cette valeur lue soit égale à 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
#include<stdio.h> 
 
main() 
{ int entier; float reel; char caractere;char* chaine; 
do { 
puts("Entrez un entier : 0 pour arreter"); 
scanf("%d",&entier); 
printf("entier = %d\n",entier); 
} while(entier); exit(0);
Lorsque je l'execute et que j'entre,par exemple, abc, voici les resultats de l'execution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Entrez un entier : 0 pour arreter 
entier = 1075028800 
Entrez un entier : 0 pour arreter 
entier = 1075028800 
Entrez un entier : 0 pour arreter 
entier = 1075028800 
Entrez un entier : 0 pour arreter 
entier = 1075028800 
Entrez un entier : 0 pour arreter 
entier = 1075028800 
............................................. (et ceci des centaines de fois)
En Java, ce problème est evitable grace à l'exception declenchée lors de l'appel de la méthode parseInt,mais en C, je ne vois pas du tout comment résoudre le problème. Si qqn pouvait me dépanner...
Merci d'avance.