La fonction fgetc retourne un int et non un char. Avant de dire que ce n'est pas dû au code, il faut d'abord se dire que le problème vient de ton code et ensuite seulement tu peux dire que le problème vient de ton code. Dans de rare cas, le problème vient du processeur... et si le problème vient du processeur, ce n'est pas le compileur qui te donnerait un warning, tu aurais une erreur d'exécution.
- Edité par Pouet_forever 25 avril 2019 à 11:51:53
Le premier code indique un warning. Ce warning indique que la boucle ne se terminera jamais. Et à l'exécution tu vois qu'il avait raison. Alors pourquoi? Comme les char sont signés chez toi, la lecture sera tronquée à un char et donnera un nombre qui pourra aller de 0 à 255. Quand on atteint la fin du fichier, la fonction retourne la valeur EOF qui est tronquée en un nombre obligatoirement entre 0 et 255 et donc la comparaison c != EOF correspond à poser la question : est-ce qu'un nombre c allant de 0 à 255 peut il valoir -1(=la valeur de EOF)? Réponse du compilateur : "Ça n'arrivera jamais". On ne verra jamais la fin du fichier!
Le second code n'a pas le warning. A la place il a une autre erreur. on suppose maintenant les lectures tronquées dans un int8_t. Les valeurs possibles vont de -128 à +127. Le test qui suit est donc possible, mais il existe maintenant 2 cas où c peut valoir -1: - quand la fonction getc() a retourné un EOF - mais aussi (c'est là le bug) quand la fonction va lire le caractère '\xFF'. Ce caractère converti en int8_t devient -1. Il sera confondu avec une fin de fichier!
Il faut écrire un troisième code : Pouet_forever t'a indiqué quoi faire. Il n'y aura plus ni le warning du premier code, ni l'erreur du second code.
mais ce n'est pas du au code, mais surement du au processeur, ...
Par defaut dit toi que l'erreur est TOUJOURS l'interface chaise clavier. Avant de dire un truc aussi gros que : c'est le processeur, pense au nombre de personnes dans le mondes utilisant un processeur comme le tien, si l'erruer venais de là elle serait connue depuis bien longetemps
- Edité par ox223252 26 avril 2019 à 14:39:02
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
× 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.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
En recherche d'emploi.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub