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.
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 #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);
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...
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)
Merci d'avance.
Partager