Comparaison de caractere en C

Résolu
Meph Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
Meph Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis actuellement en stage de premeire annee BTS IG, j'ai deja des connaisances en VB et je souhaitais apprendre le C. Je fais actuellement un petit jeu en mode console et je demande au joueur s'il veut refaire une partie, pour cela je fais une boucle while avec une autre boucle a l'interieur pour le forcer a rentrer seulement O ou N.
Voila le code:
 do 
                { 
                    printf("Voulez-vous rejouer ? (O/N)\n"); 
                    scanf("%c", &reponse); 
                    fflush(stdin); 
                    if (reponse == 'o') 
                        { 
                            continuerPartie = 1; 
                        } 
                    else 
                        { 
                            continuerPartie = 0; 
                        } 
                } while ((reponse == 'o') || (reponse == 'n')); 
                printf("%d %c", continuerPartie, reponse); 

Si la variable reponse est modifiee correctement enr evanche continuerPartie prend toujours la valeur 0 et le jeu ne se relance pas.
A voir également:

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je pense surtout que c'est ton while qui est mauvais (enfin, la condition).
Imagine que reponse='a', alors (reponse == 'o') et (reponse == 'n')sont tout les deux faux (0), nous sortons donc de la boucle.
d'un autre coté, si reponse='o', (reponse == 'o') est vrai (1) et donc la condition du while est vrai (1) donc la boucle continue.
while veux dire "tant que".
En prenant la négation de ta formule, ça ira mieux.
La logique n'est pas naturelle pour tout le monde.
1
Meph Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Ah, je viens de comprendre. Merci beaucoup, ce n'est pas la logique qui me fait defaut mais j'avais associe cette boucle a do....loop until qui existe en VB et dont l'equivalent en algo et Faire...Jusqu'à :)
Je te remercie encore d em'avoir eclaire, je teste ca et je te dis si ca fonctionne.

Edit: Ca fonctionne !! Merci encore.
0