Boucle do/while probleme

Résolu
CherryBlondy Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
CherryBlondy Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
merci beaucoup pour l'info

super rapide en plus mici encore =)
0