Void quitter en C

Résolu
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
ah bon merci
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
daccrod avec fiddy. exit(EXIT_SUCCESS) est courant. C'est juste une macro qui doit donner 0.
0