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 -
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:
Si la variable reponse est modifiee correctement enr evanche continuerPartie prend toujours la valeur 0 et le jeu ne se relance pas.
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:
- Comparaison de caractere en C
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Comparaison million milliard - Accueil - Technologies
- Caractere vide - Guide
2 réponses
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.
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.
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.
Je te remercie encore d em'avoir eclaire, je teste ca et je te dis si ca fonctionne.
Edit: Ca fonctionne !! Merci encore.