Probleme menu en C

Résolu/Fermé
OnlyDraft Messages postés 121 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 4 février 2011 - 25 févr. 2009 à 13:11
OnlyDraft Messages postés 121 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 4 février 2011 - 25 févr. 2009 à 15:22
Bonjour,

Je suis en train de réaliser un programme en C pour mon boulo, je suis novice en la matière et j'ai un problème avec mon menu.
En fait il fonctionne bien mais j'ai un bug.

Je m'explique:
Mon programme propose à l'utilisateur via un menu plusieurs options ( 1 pour faire tache A, 2 pour faire tache B ...).
Je souhaite obtimisé ce menu, si l'utilisateur tape un choix non proposé cela doit afficher un message d'erreur, je parviens a le faire si il tape un chiffre (exemple 9 car il n'y a que 5 options) mais s'il tape une lettre mon programme boucle a l'infini...

Quelqu'un sait comment je peux faire??

Merci d'avance
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 845
25 févr. 2009 à 13:43
Salut,
Oui, cela est normal que cela boucle infiniment. En fait, je te conseille plutôt d'utiliser un char pour stocker la réponse de l'utilisateur, de vider le buffer clavier, et de se servir du code ascii (et non du chiffre) pour le choix du menu.
Ce qui donne :
char fin=0;
char rep;

while(! fin) {

   affichage(); //affichage du menu

   printf("choix : ");
   rep=getchar();

   while(getchar()!='\n'); //on vide le buffer clavier

   switch(rep){
      case '1': //on utilise '1' et non 1.
           fonction1();
           break;
       //etc
       case '0': //choix quitter
           fin=1;
           break;
       default :
            puts("choix inexistant");
   }
}

//fin du programme
return 0;
0
OnlyDraft Messages postés 121 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 4 février 2011 15
25 févr. 2009 à 15:22
Impek!!

Encore merci!

Tu m'a resolu deux problemes en deux jours!!!
bravo!
0