Pouvez vous m'expliquer pourquoi je ne sors jamais de cette boucle même si je rentre soit z soit s soit q soit d ?
int main()
{
char direction;
printf("Dans quelle direction veux tu aller ? z,q,s,d \n\n");
scanf("%s",&direction);
while(direction!='z' || direction!='q' || direction!='s' || direction!='d') /// Boucle de test pour que les directions
{ /// soient bonnes
printf("Tu t'es trompe, dans quelle direction veux tu aller ? z,q,s,d \n\n");
fflush(stdin);
scanf("%s",&direction);
}
}
Le souci peut venir de la ligne 10 : tu utilises %s au lieu de %c.
De plus, il me semble que la condition du while est toujours vérifiée. Par exemple si on tape 's', la lettre n'est certes plus différente de 's', mais elle reste différente de 'z' (notamment), donc la condition reste vraie.
Le format %s de scanf() implique un ajout automatique d'un '\0', qui sera placé sur un octet qui ne t'appartient pas (comportmeent indéfini, crash potentiel ...).
fflush() sur stdin ça n'existe pas, fflush() ne marche que sur des flux de sortie : comportement indéfini, crash potentiel ...
Ta boucle recommence si : direction est différent de 'z' OU BIEN différent de 'q' OU BIEN différent de ... etc. Donc si tu entres 'z' ou 'q', dans les deux cas la boucle va recommencer
Boucle while
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.