Homework loadDatabase verifié un champ attendu ne peut pas être lu

Homework loadDatabase verifié un champ attendu ne peut pas être lu

by Thomas Théo Bienaimé -
Number of replies: 1

Bonjour,

Afin de verifier que le prochain champ attendu est bien présent je verifie avant chaque appele à fscanf que je ne suis pas à la fin du fichier, si je le suis je retourne une erreur signalant que le champ attendu ne peut être lu (i.e il devrait avoir un champ mais il n'y a rien, c'est la fin du fichier).

En effet j'ai remarqué que si l'on rentrait dans notre data.txt un début de Students mais pas entierement, les donnée non rentrée seront lu comme un 0 par défault.

Cependant au bout de la lecture de la deuxième ligne de data.txt feof me retourne un entier non nul, alors qu'il y'a bien entendu plus de 2 ligne d'information dans data.txt.

Pouvez-vous m'éclairer sur le sujet.

In reply to Thomas Théo Bienaimé

Re: Homework loadDatabase verifié un champ attendu ne peut pas être lu

by Cédric Viaccoz -

Hello,


Malheureusement sans regarder ton code il m'est un peu difficile de comprendre d'ou viendrait le problème. En effet, fscanf ne devrait pas retourner EOF si tôt dans la lecture du fichier. Ce que je peux te conseiller, c'est de peut être essayer une autre approche comme par exemple utiliser "fgets" pour récupérer chaque ligne et ensuite traiter manuellement les entrées à lire ou bien utiliser "sscanf" ensuite sur la chaîne récupérée par "fgets".

Avant de tenter ça, contrôle tout de même que l'ouverture du fichier s'est passée correctement, et peut être essaie de débugger ta lecture en utilisant "ftell" avant et après chaque "fscanf" pour s'assurer que le pointeur de fichier avance correctement avec la lecture. Fais aussi attention au formattage utilisé dans ton "fscanf", peut être tu cherches à lire un "int" à la place d'un "double" à un certain endroit, et la partie fractionnaire qui reste dans le tampon d'entrée pourrait enclencher les fscanf suivants.