Problème de boucle...? - C - Programmation
Marsh Posté le 18-01-2008 à 11:29:13
Vide le flux stdin avant d'en faire la lecture à stocker dans ta variable "reponse".
Par exemple :
Code :
|
Marsh Posté le 18-01-2008 à 11:37:09
Elmoricq a écrit : Vide le flux stdin avant d'en faire la lecture à stocker dans ta variable "reponse".
|
Merci, mais étant débutante je comprends pas trop tout ca.. ou je le met déjà?
Et en plus n'y aurait-il pas plus simple, parce que mon prof va vraiment se demander d'ou je sors ca
Marsh Posté le 18-01-2008 à 11:54:51
Lorsque tu tapes au clavier, tu alimentes le flux d'entrée standard : stdin.
C'est un buffer, c'est-à-dire que ça stocke tant que l'on ne lit pas dedans.
Si tu ne vides pas ce buffer avant ta ligne "reponse=getchar();", le programme n'attendra pas que l'utilisateur entre quoi que ce soit puisqu'il y a encore quelque chose à lire dans stdin.
Donc, il faut vider ce buffer avant de demander à l'utilisateur d'entrer son choix au menu. D'où le petit code que je t'ai mis, qui lit tous les caractères de stdin avant de rendre la main (tu peux remplacer "fgetc(stdin)" par "getchar()" si tu veux, ça fait la même chose).
Pour plus d'information : man fgetc (en ligne de commande sur unix, ou sur google si tu ne bosses pas sur un unix)
Marsh Posté le 18-01-2008 à 11:22:18
Bonjour tout le monde,
J'ai un petit soucis avec mon programme.
Voila j'ai un menu de choix dans mon programme avec une fonction différente pour chaque choix. Et le programme ré-affiche le menu de choix après l'avoir éxécuté.
Pour cela j'ai donc fait un do...while sur la réponse entrer (tant que l'utilisateur n'a pas choisit de quitter il réaffiche le menu)
Et le problème est le suivant, après avoir exécuté la fonction il me réaffiche bien mon menu mais en prenant déjà en compte une réponse, celle du défaut du switch (le mauvais choix) et me remet le menu après ou il me laisse le choix d'entrer quelque chose..
Je sais pas si j'ai été très clair...
Mais si vous avez des idées d'ou ca peut venir? de la boucle do? de la fonction ?
je vous met deja la boucle du menu :
Merci pour votre aide