Détection de fin de fichier... [C] - C - Programmation
Marsh Posté le 30-11-2013 à 23:20:30
Bonjour !
Testez le retour de fread, qui vous dit combien d'éléments ont été lus sur ceux que vous demandez (1, en l'occurrence).
Logiquement, au dernier appel, vous devriez avoir 0, et c'est justement cet appel-là qui déclenche le "feof", quand vous tentez de lire après la fin du fichier.
Et cela vous protège aussi contre une éventuelle structure incomplète.
Bonne continuation !
Marsh Posté le 30-11-2013 à 23:25:47
Je crois que je suis un peu bête mais je n'y arrive toujours pas !
Une petite démonstrations SVP ?
Merci.
EDIT : Quand j'affiche le nombre de blocs lus, il me dit 1 après que j'ai affiché la dernière structure du fichier !
EDIT 2 : au final j'ai fait comme ceci :
Code :
|
je sais pas si c'est le plus simple mais ça marche
Marsh Posté le 01-12-2013 à 00:16:32
C'est pas mal.
En théorie, vous pouvez éventuellement tester feof et ferror, pour savoir si la lecture a échoué parce que vous êtes arrivé à la fin du fichier ou si il y a eu une erreur quelconque, mais tel quel, cela me parait assez correct.
Bonne continuation !
Marsh Posté le 07-12-2013 à 13:27:17
kferfred a écrit :
|
Salut
Le plus simple
Code :
|
Parce que, contrairement aux idées reçues, feof() ne sert pas à détecter la fin de fichier mais à détecter, une fois que le fichier a été lu et que la fin de lecture a été détectée, si l'arrêt est dû à une fin de fichier ou autre (erreur IO, etc...)
Conclusion: si on utlise feof() pour détecter la fin de fichier, on la détecte un tour trop tard...
Marsh Posté le 30-11-2013 à 23:17:38
Salut !
Voila je dois lire dans un fichier différentes structures a la suite jusqu'a la fin du fichier, le problème c'est que ça m'affiche toujours la dernière structure deux fois !
J'ai mis toute la fonction mais je sais que ça vient de mon feof(ptMem) à la dernière ligne, le problème c'est que je sais pas du tout comment détecter autrement la fin du fichier...
Voila en espérant que vous pourrez m'aider, merci de prendre de votre temps pour aider de pauvres étudiants comme moi
Bises.