Problème avec la boucle While
Résolu
nazgulou
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Salut j'ai un problème avec une boucle while dans un de mes programmes , je suis débutant .
Le problème est que la boucle recommence même lorsque la condition est fausse.
Voilà le programme en question si vous pouvez m'aider , s'il vous plait.
Le problème est que la boucle recommence même lorsque la condition est fausse.
Voilà le programme en question si vous pouvez m'aider , s'il vous plait.
int main() { char reponse[10], Chat[] = "chat"; while(reponse != Chat) { printf("Dit : chat\n"); scanf("%s", reponse); if(strcmp(reponse,Chat) == 0) { printf("Bien !\n"); } else { printf("Repete !\n"); } } return 0; }
A voir également:
- Problème avec la boucle While
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
2 réponses
Bonjour,
Ton erreur vient de là : while(reponse != Chat)
Tu compares les adresses des tableaux. Comme il s'agit d'adresses différentes, il y a toujours inégalité. Donc tu ne sortiras jamais de cette boucle.
Pour comparer le contenu du tableau, il faut faire comme tu as fait dans ton if avec strcmp().
scanf("%s", reponse);
Je te conseille plutôt de mettre : scanf("%9s", reponse);
Sinon, ton programme risque de planter si tu rentres une chaîne trop grande.
char reponse[10]
Tu n'as pas initialisé reponse. Cela risque donc de poser problème pour la première passe du while(). Il faut donc faire :
Attention également à l'indentation qui n'est pas régulière ;-).
Cdlt,
Google is your friend
Ton erreur vient de là : while(reponse != Chat)
Tu compares les adresses des tableaux. Comme il s'agit d'adresses différentes, il y a toujours inégalité. Donc tu ne sortiras jamais de cette boucle.
Pour comparer le contenu du tableau, il faut faire comme tu as fait dans ton if avec strcmp().
while (strcmp(reponse,Chat) != 0)
scanf("%s", reponse);
Je te conseille plutôt de mettre : scanf("%9s", reponse);
Sinon, ton programme risque de planter si tu rentres une chaîne trop grande.
char reponse[10]
Tu n'as pas initialisé reponse. Cela risque donc de poser problème pour la première passe du while(). Il faut donc faire :
char reponse[10]="";
Attention également à l'indentation qui n'est pas régulière ;-).
Cdlt,
Google is your friend
nazgulou
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
Merci de m'avoir expliquer tout ça !