Comparaison de caractere en C

Résolu/Fermé
Meph Messages postés 15 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 16 juin 2010 - Modifié par Meph le 16/06/2010 à 09:45
Meph Messages postés 15 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 16 juin 2010 - 16 juin 2010 à 10:02
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 juin 2010 à 09:56
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 lundi 5 octobre 2009 Statut Membre Dernière intervention 16 juin 2010
Modifié par Meph le 16/06/2010 à 10:09
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