[C] Erreur lecture clavier

Erreur lecture clavier [C] - C++ - Programmation

Marsh Posté le 12-10-2002 à 20:12:21    

Bonsoir,
J'utilise la fonction scanf pour récupérer la réponse à un menu du genre  
1/ajouter
2/supprimer
...
 

Code :
  1. scanf("%d", &codeMenu);


 
Comment puis-je gérer un cas d'erreur où l'utilisateur ne rentre rien ( retour chariot) ou rentre un mot. Parce que ce menu se trouve dans une boucle et si l'utilisateur rentre n'importe quoi ça fait une boucle infinie, le programme ne s'arrête même plus pour exécuter le scanf...
 
J'ai essayé d'utiliser fgets et gets mais pareil, le programme ne s'arrête plus pour effectuer une lecture.

Reply

Marsh Posté le 12-10-2002 à 20:12:21   

Reply

Marsh Posté le 13-10-2002 à 03:54:51    

Multi-post: http://www.developpez.net/forums/viewtopic.php?t=36685 (supprimé ? déplacé ?)
Pourquoi utiliser un pseudo différent ?
 
Quelque chose comme ça:

Code :
  1. int c= getchar();
  2. //ou scanf("%1c",&c)  
  3. //ou getch(): n'attends pas [entrée], mais n'est pas portable
  4. switch(c){
  5. case EOF : /*erreur d'entrée*/; break; //c doit être un int pour recevoir cette valeur !
  6. case '\n': /*entrée vide    */; break;
  7. case '1' : /*choix1         */; break;
  8. //...
  9. default  : /*entrée invalide*/; break;
  10. }
  11. if(c!='\n')
  12. while(getchar() != '\n'); //vider ce qui est (éventuellement) en trop


 
Lectures à propos:
http://www.isty-info.uvsq.fr/~rume [...] 4.html#q_5
http://www.comeaucomputing.com/techtalk/#flushinput


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed