Parcours d'un fichier de structures [Résolu]

Signaler
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
playmo420
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
Salut.

Bon, j'ai un petit problème. Je voudrais parcourir un fichier de
structures pour savoir combien il y en a à l'intérieur. Voilà mon bout
de code :



int nombreEntrees(FILE* index){

int nbEnt = 0;

while(fseek(index,sizeof(Entree),SEEK_CUR) != EOF) nbEnt++;

return nbEnt;

}



fseek sert logiquement à déplacer le pointeur de position dans le fichier. Je le déplace donc de
sizeof(Entree) (taille d'une des structures enregistrées) à partir de
SEEK_CUR
(position courante dans le fichier) et il me semble qu'une fois
arrivé à la fin du fichier, fseek rend EOF. Mais là, le programme
boucle (je me demande d'ailleurs où va le pointeur de position vu que
je l'ai regardé avec ftell et il augmente indéfiniement). Donc ma
question est simple : pourquoi ça ne marche pas

3 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Le plus simple serait de récupérer la taille du fichier (place toi à la fin avec fssek, fais ftell et revient au début) ensuite, divise par la taille de ta structure.
Messages postés
66
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
4 novembre 2010

Salut,



fseek retourne 0 tant qu'il a se raplacer correctement dans le fichier .

En cas d'erreur ou de placement impossible (fin de fichier par ex) fseek retourne une valur differente de 0.



Donc ton while devrait plutot etre :



while(!fseek(index, sizeof(Entree), SEEK_CUR) ++nbEnt;



Oto
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

Pas bête ! Merci.