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...
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)
{
switch(toupper(correct))
{
<...>
}
}
else
{
<... traitement du cas où fgetc() a renvoyé "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é...
Message édité par Sve@r le 10-05-2007 à 18:57:14
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.