Problème avec la boucle While
Résolu
nazgulou
Messages postés
6
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
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
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
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
Statut
Membre
Merci de m'avoir expliquer tout ça !