Boucle while qui bug! [C] - C - Programmation
Marsh Posté le 03-05-2007 à 19:04:19
ReplyMarsh Posté le 03-05-2007 à 20:57:11
correct doit être de type int.
Avant de faire quoi ce que ce soit avec le retour de fgetc, tu dois le comparer à EOF
Marsh Posté le 10-05-2007 à 18:15:29
Le break n'a rien changé vu que default est le dernier déclaré donc il sortait obligatoirement de la boucle (je pense).
Correct est bien en int.
Eof, je ne connais pas je vais me renseigner!
Merci
Marsh Posté le 10-05-2007 à 18:55:24
timz a écrit : Le break n'a rien changé vu que default est le dernier déclaré donc il sortait obligatoirement de la boucle (je pense). |
Pas tout à fait. Le break te fait sortir de la première structure englobante qu'il rencontre à choisir parmi la boucle (for/while/do...while) ou le branchement multiple (switch). Ce dernier étant le plus proche, chaque break te fait sortir et aller directement au "while (i != 1)". Ensuite, que tu sortes ou pas du while dépend si i vaut 1 ou pas...
timz a écrit : Eof, je ne connais pas je vais me renseigner! |
EOF est une valeur particulière (aujourd'hui elle est définie à -1 mais ça peut changer) que renvoie la fonction "fgetc()" quand elle lit un flux qui est vide (fin de fichier, clavier vide, etc). Ce que dit Taz, c'est qu'il faut d'abord récupérer le fgetc() et le comparer à EOF avant d'aller faire un toupper dessus
Ex:
if ((correct=fgetc(fp)) != EOF) |
PS: pas besoin de mettre des accolades dans les case. Le début du code est défini par le mot "case" et la fin par le mot "break" ou l'accolade fermant le switch si aucun break n'est rencontré. D'ailleurs, si tu regardes bien la structure de l'instruction "case", tu remarqueras le ":" significatif d'un label. En fait, le switch/case n'est qu'un "goto" masqué...
Marsh Posté le 03-05-2007 à 18:54:41
Bonjour à tous!
J'ai fait un programme tel que:
Si on tape sur la lettre O on recommence le programme
Si on tape sur la lettre N on continue
Or pour la lettre O cela fonctionne mais pour la lettre N non, mais j'ai quand même le décision=1
Donc je pense que cela reste bloqué quelque part, mais je ne vois pas l'erreur
Merci a celui qui pourra m'éclairer
Message édité par timz le 03-05-2007 à 18:56:37