Formulaire switch et arrêt type : Voulez vous continuez ?

Fermé
machavelio85 - 13 juin 2013 à 00:17
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 28 juin 2013 à 22:40
Bonjour,
Je débute en C et je souhaite réaliser un ptit formulaire de fonctions pour m'entraîner. J'aurais aimé savoir si c'était possible, sans faire trop compliquer, d'effectuer un arrêt de fonction. Un truc genre (en console):

---Choix de votre fonction---
1: fonction 1
2: fonction 2
3: fonction 3
Votre choix ? 3
exécution de la fonction 3 ...
Voulez vous continuer ? (O/N)

J'ai déjà réalisé le switch pour le choix des fonctions, et ça fonctionne, mais ce que j'arrive pas à faire c'est le cas si l'utilisateur répond O, on ré-affiche le menu et si N on arrête. Je sais pas où je dois placer un if ou autre chose.

Merci d'avance pour vos réponses.

3 réponses

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
13 juin 2013 à 09:58
Salut machavelio85,

Je pense que c'est plus ergonomique de faire :

---Choix de votre fonction---
1: fonction 1
2: fonction 2
3: fonction 3
4: quitter ce programme
Votre choix ? 3
exécution de la fonction 3 ...

et que l'algorithme du programme ressemble à cela (pseudo-code, juste pour montrer la logique) :

Faire
    effacer_ecran
    afficher_menu
    choix = demander_choix
    si choix différent de 4, alors executer_choix
Tant que choix différent de 4

Dal
0
machavelio85 Messages postés 1 Date d'inscription jeudi 13 juin 2013 Statut Membre Dernière intervention 13 juin 2013
13 juin 2013 à 17:36
Merci beaucoup Dal ;) ça m'a été très utile et en effet c'est beaucoup plus ergonomique comme ceci.
0
karara20 Messages postés 32 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 13 juillet 2014 9
28 juin 2013 à 16:31
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
28 juin 2013 à 18:58
Salut Karara :-)

Si tu tapes "toto" comme choix dans ton programme, au lieu de 1, 2 ou 3. Qu'arrive-t-il ?

Et si tu tapes "3 s'il vous plaît" ?

Et si tu appelle une fonction telle que celle-ci après ton scanf ?

https://c.developpez.com/faq/?page=Gestion-du-clavier-et-de-l-ecran-en-mode-console#CONS_vider_buffer_clavier


Dal
0
voila mon programme après modification

http://tutodev1.blogspot.com/2013/06/choix-avec-switch-et-do-while.html
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > karara20
28 juin 2013 à 20:18
Ton code n'est pas bon. Tu mets des %s dans scanf pour lire des char. De plus tu ne vides pas le buffer.
0
pour faire ça tu doit Ecrire la fonction fflush(stdin); après scanf
est ça le résultat finale :après modification nb3::

http://tutodev1.blogspot.com/2013/06/choix-avec-switch-et-do-while.html
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 juin 2013 à 21:58
pour faire ça tu doit Ecrire la fonction fflush(stdin); après scanf
Certainement pas ! fflush() provoque un comportement indéterminé sur stdin.
La façon standard est :
int c;
while ( (c=getchar()) != '\n' && c != EOF );
0