Fin du fichier lu, champs fscanf invalides

Fin du fichier lu, champs fscanf invalides

by Victor Louis Carles -
Number of replies: 2

Bonjour.

Dans le homework, il nous ait demandé de détecter quand un champ de fscanf ne peut pas être lu. Mais en vérifiant que les champs sont toujours bien lus, une fois arrivé à la fin du fichier txt, une erreur est détectée. Pourtant, le EOF devrait être actif et indiquer donc qu'il n'y a plus rien à lire (i.e on sort de la boucle). Mais il semblerait que le fichier continue d'être lu malgré tout, et qu'on lise des line breaks qui sont donc considérés comme des inputs invalides par le programme.

Serait-il possible de savoir quel est le problème dans mon raisonnement ?

Merci d'avance.

In reply to Victor Louis Carles

Re: Fin du fichier lu, champs fscanf invalides

by Deleted user -

Bonjour,

Comme indiqué dans la documentation de feof [1], pour que l'indicateur de fin de fichier soit actif et que feof retourne vrai, il faut que le caractère EOF ait été lu au préalable, par exemple lors d'un appel à fscanf, getchar, fgets ou autre. Si comme vous dites, votre code lit tout le fichier mais ne parvient pas à stopper la lecture sans détecter une nouvelle erreur pour un champ inexistant, c'est qu'il manque quelque chose dans la logique de votre code.

[1] http://www.cplusplus.com/reference/cstdio/feof/