Lecture dans un fichier

Vincentsoft Messages postés 68 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 17 avril 2009 - 29 avril 2004 à 22:14
Vincentsoft Messages postés 68 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 17 avril 2009 - 30 avril 2004 à 12:45
Salut tout le monde,

J'ai un petit problème. Je veux compter (en C) le nombre d'octet d'un fichier.
J'ai écris cette fonction,

int TailleFichier(char *NomFichier){
FILE *f;
int ISize=0;

f=fopen(NomFichier,"r");

while(!feof(f)){
fgetc(f);
//avec cet appel, c'est le même résultat: fread(&CharActuel,sizeof(char),1,f);
ISize++;
}

fclose(f);

return ISize;
}


Et mon problème, c'est que suivant le caractère lu, je sort de la boucle alors que la fin de fichier n'est pas atteinte. Par exemple, si le caractère lu a pour code ASCII 1A il sort de la boucle. Avec certains autres codes aussi...
Donc, ma fonction fonctionne avec certains fichiers mais si le fichier contient certain caractère, la fonction ne retourne pas le bon résultat.
Quelqu'un pourrai m'aider?

Merci

2 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 avril 2004 à 23:16
ben fait pas comme ca, c'est trop lent

deplace le pointeur a la fin en retenant la position du debut

#include <stdio.h>

int main()
{
FILE *file;
long beg,end;

file=fopen("toto.txt","r");

beg=ftell(file);
fseek(file,0,SEEK_END);
end=ftell(file);

fclose(file);

printf("taille de toto.txt = %d\n octets",end-beg);

return 0;
}
0
Vincentsoft Messages postés 68 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 17 avril 2009
30 avril 2004 à 12:45
Merci, je vais utiliser ta méthode...je n'y avait pas penser car je voulais absolument faire en séquentiel.

Merci
0
Rejoignez-nous