Void quitter en C

Résolu/Fermé
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 - 24 févr. 2012 à 11:54
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 24 févr. 2012 à 13:54
Bonjour,

je sais pas comment programmer une fonction "quitter" de type void; voilà mon code:

//-------------------------------------------------------------
void quitter(void)
{
char rep;

printf ("voulez vous vraiment quitter !! (O/N) \n");
scanf("%s",&rep);

if(rep=='o' || rep=='O')
exit(EXIT_SUCCESS)
else if(rep=='n' || rep=='N')
menu();
else
{
printf("Veuillez choisir l'option correcte!....... cliquez sur une touche.......");
getch();
return;
}
}
//-----------------------------------------------------------------
veuillez me dire comment résoudre ce pb, et merc d'avance.

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
24 févr. 2012 à 12:29
Salut.
Et c'est quoi le problème de cette fonction.
Le principal que je foi c'est passé un char en argument de scanf utilisant %s. Mieu vaut utiliser getc().
tu peux eventuellement rappeler quitter() dans ton dernier else.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 févr. 2012 à 12:38
scanf("%s",&rep);
Attention, rep est de type char. Il faut donc plutôt utiliser scanf("%c",&rep) ou plus simplement : rep=getchar(); Et pour vider le '\n' (idéal lorsque tu souhaites réutiliser un scanf) : rep=getchar(); getchar(); (oui deux getchar()).
Ensuite, ton return ne sert à rien.
0
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 2
24 févr. 2012 à 13:01
merci à vous ts, mais mon problème n'est pas au niveau de lire la réponse de l'utilisateur, mais comment fermer la fenêtre si rep==O .............
Alors, j'ai trouvé la solution c'est exit (0) ca marche b1, voilà donc la fonction correcte:

//---------------------------------------------------------
void Quitter(void)
{
char rep;
system("cls");
printf ("voulez vous vraiment quitter !! (O/N) \n");
scanf("%s",&rep);

if(rep=='o' || rep=='O')
exit(0);
else if(rep=='n' || rep=='N')
menu();
else
{
printf("Veuillez choisir l'option correcte!.. cliquez sur une touche..");
getch();
return;
}
}
//-------------------------------------------------------------
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 févr. 2012 à 13:06
mais mon problème n'est pas au niveau de lire la réponse de l'utilisateur
Beh si justement, ton problème est à ce niveau.
Si tu fais scanf("%s",&rep) alors tu risques (pas forcément) d'avoir des problèmes de récupération de variable. Il s'agit donc bel et bien d'une erreur qui peut expliquer pourquoi ça ne marchait pas dans ton code initial car exit(EXIT_SUCCESS) est correct (à condition d'avoir inclu le header stdlib.h).
0
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 2
24 févr. 2012 à 13:08
ah bon merci
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
24 févr. 2012 à 13:54
daccrod avec fiddy. exit(EXIT_SUCCESS) est courant. C'est juste une macro qui doit donner 0.
0