Quitter le programme lorsque je presse touche

tomy2904 -  
Doctor C Messages postés 627 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

A voir également:

6 réponses

tomy2904
 
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) :/
1
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
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);
0
tomy2904
 
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 !! ;)
0
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
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);

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
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.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
0
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
Merci de t'incruster, je t'avoue que mon C est assez loin et que j'ai oublié quelques notions spécifiques au langage.
0