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 
2
3
4
5
6
7
8
9
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 
2
3
4
5
6
7
8
9
10
11
Merci d'avance.

 

 
		
		 
         
  
			
			


 
   


 Problème de lecture d'un entier au clavier
 Problème de lecture d'un entier au clavier
				 Répondre avec citation
  Répondre avec citation

 
 
 
			


 
  
  
 
 
			 
   
  
			 Envoyé par Yakurena
 Envoyé par Yakurena
					
				 
			 
						 
						
 
    
			 Cela sous-entend qu'il faut a tout prix tester le retour de scanf  (surtout quand on cherche à récuperer autre chose que des chaînes de caractères (cas plus permissif) ).
 Cela sous-entend qu'il faut a tout prix tester le retour de scanf  (surtout quand on cherche à récuperer autre chose que des chaînes de caractères (cas plus permissif) ). )
 )
Partager