Boucle do/while probleme

Résolu/Fermé
CherryBlondy Messages postés 16 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 3 mars 2009 - 6 déc. 2008 à 16:00
CherryBlondy Messages postés 16 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 3 mars 2009 - 6 déc. 2008 à 16:32
Bonjour,

Je suis débutante en C. J'ai tenter de faire un p'tit code. A l'interieur de ce dernier j'ai un p'tit problème :
Je vous copie la partie concernée :

do
{
printf("Etes vous d'accord ? y/n");
scanf("%c", &playagain);
} while (playagain=='y');


Mais voilà à l'écran quand je l'execute il m'affiche une fois "Etes vous d'accord ? y/n" puis la boucle est finit. Mon programme est finit tout court. L'utilisateur (ici moi) n'a pas le temps de taper quoi que se soit.

Je comprends pas trop pourquoi il me fait ça. Si quelqu'un pouvait m'indiquer comment recuperer ce que l'utilisateur à écrit avant que la boucle se finise (pourtant il devrait executer ce qu'il y a à l'interieur de la boucle avant le test non?)

Amicalement =)
Dans l'attente de votre aide

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 déc. 2008 à 16:09
Salut,
C'est l'effet kiss cool ^^. En fait lorsque tu récupères le caractère, il y a le retour chariot qui va être stocker dans le buffer clavier. Et il sera utilisé lors du deuxième passage de la boucle. Et comme '\n' est différent de 'y'. Tu sors de la boucle.
L'astuce consiste à faire après le scanf("%c") de mettre : while(getchar()!='\n');
Cdlt
0
CherryBlondy Messages postés 16 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 3 mars 2009
6 déc. 2008 à 16:32
merci beaucoup pour l'info

super rapide en plus mici encore =)
0