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 -
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.
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
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.
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.
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.
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.
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;
}
}
//-------------------------------------------------------------
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;
}
}
//-------------------------------------------------------------
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).
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).