Quitter le programme lorsque je presse touche
tomy2904
-
Doctor C Messages postés 630 Date d'inscription Statut Membre Dernière intervention -
Doctor C Messages postés 630 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila, j'aimerais savoir quel code utiliser pour pouvoir quitter le programme si l'utilisateur presse une touche de son clavier.
En fait, j'ai créé un petit menu :
1.Jouer
2.Quitter
Et j'aimerais que le programme se ferme en mettant une phrase avant (par exemple) lorsque l'utilisateur presse la touche 2 (par exemple)
Un grand merci pour votre aide !!! :D
Voila, j'aimerais savoir quel code utiliser pour pouvoir quitter le programme si l'utilisateur presse une touche de son clavier.
En fait, j'ai créé un petit menu :
1.Jouer
2.Quitter
Et j'aimerais que le programme se ferme en mettant une phrase avant (par exemple) lorsque l'utilisateur presse la touche 2 (par exemple)
Un grand merci pour votre aide !!! :D
6 réponses
-
Voila, je viens de tester ta derniere proposition..
Lorsque je choisi la 2ieme proposition càd "Quitter", le programme ne m'affiche pas le "printf" :S Il passe directement a la suite càd à la sortie du programme donc "press any key..."
VOila comment ce presente mon programme avec le menu et ma selection :
--------------------------------------------------------------------------------------------
(1) : Jouer
(2) : Regles du jeu
(3) : Quitter
Que voulez-vous faire ? 3
Process returned 4207747 (0x403483) execution time : 1.963 s
Press any key to continue.
-------------------------------------------------------------------------------------------
--> Il n'y a pas la demande avant de quitter.. Je suppose donc qu'il ne tient pas compte du "case 3" (dans ce cas-ci) :/ -
Je suppose que tu programmes en C?
Tu peux faire une condition où si l'utilisateur appuie sur 2, tu affiches une phrase du genre 'Voulez-vous vraiment quitter le programme? (o/n)'.
Ensuite, tu fais un scanf pour obtenir ce que l'utilisateur choisi (oui ou non) et s'il tape 'o', tu fais le code suivant:
exit(EXIT_SUCCESS);
-
Ok merci bcp ! :D
Voila ce que j'ai fait pour le case2 :
printf ("Voulez-vous vraiment quitter? Oui(O)/Non(N)");
scanf ("%s", &lettre); //variable etant déclarée plus au : ' char lettre; '
if (lettre=='O')
{
exit(EXIT_SUCCESS);
}
else
{
//Comment revenir au tout debut du programme pour réafficher le menu??
}
Est-ce correct? Et pourrais-tu m'indiquer ce que je pourrais mettre dans le "else" pour pouvoir revenir a mon menu (faire la boucle quoi)?
De plus, j'ai essayé ta fonction : exit (EXIT_SUCCES);
mais lorsque je compile, je me retrouve avec des messages d'erreurs :
- "warning: incompatible implicit declaration of built-in function 'exit' "
- "error : 'EXIT_SUCCES' undeclared (first use in function)
- ...
Merci pour tes infos et pour ton aide bien sur !! ;) -
Pour la constante EXIT_SUCCESS, il faut peut-être faire un import, je me souviens plus. Mais tu peux le remplacer par un 0, ça va faire la même chose.
exit(0);
Sinon, pour le menu, tu peux le mettre dans une boucle de ce genre:
do { printf("1. Jouer"); printf("2. Quitter"); scanf("%d",&choix); switch(choix) { case 1: // le code du jeu break; case 2: printf ("Voulez-vous vraiment quitter? Oui(O)/Non(N)"); scanf ("%s", &lettre); if (lettre=='O') { exit(0); } break; } }while(true);
Si tu ne veux pas poser de question avant de quitter le programme, tu pourrais remplacer la dernière ligne par :
while(choix!=2);
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Peut-être que ta valeur de choix n'est pas la bonne.
Ajoute un 'case default' à ton switch afin de vérifier si ta variable choix a la bonne valeur d'assignée : https://www.commentcamarche.net/contents/111-langage-c-les-structures-conditionnelles
Si le switch va dans le défault, c'est que la valeur de ta variable choix n'est ni 1, ni 2, ni 3, ce qui pourrait être ton problème.
-
Bonjour,
Je m'incruste dans la conversation.
L'erreur vient du code.char lettre; scanf ("%s", &lettre);
lettre est un char, il faut donc mettre scanf("%c",&lettre); ou plus simplement lettre=getchar();
Mais il ne faut pas oublier de vider le buffer clavier qui contiendra le caractère '\n' (touche entrée) à la suite du précédent scanf.
Pour le vider, tu peux utiliser getchar() tout simplement (ou plus proprement avec une boucle while).
En conclusion, remplace scanf("%s",&lettre); par :getchar(); lettre=getchar();
Cdlt,
Google is your friend