Void quitter en C

Résolu
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

  1. Contributeur
    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.
    1. Contributeur
      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.
      1. 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;
        }
        }
        //-------------------------------------------------------------
        1. Contributeur
          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).
        2. ah bon merci
        3. Contributeur
          daccrod avec fiddy. exit(EXIT_SUCCESS) est courant. C'est juste une macro qui doit donner 0.