Taille d'un fichier

poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003 - 4 août 2003 à 10:24
misterzinzin Messages postés 112 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 26 janvier 2011 - 14 août 2005 à 13:35
A pres avoir fait:
FILE *fp=fopen(....);

Comment recuperer la taille du fichier que l'on viens d'ouvrir?

Merci d'avance.
Poseidon2

5 réponses

tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005
4 août 2003 à 12:37
taille = _filelength(_fileno( fp ))

// il faut inclure

@+
tcok
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2003 à 13:30
sur win32: GetFileSize(...) et rien a inclure.
BruNews, ciao...
0
poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003
4 août 2003 à 14:55
Merci mais en fait mon probleme ne viens pas de la. J'ai essayé les deux methode et ca marche toujours pas. J'ai un probleme avec mon fread.
En gros je cherche a lire un fichier et a en stocker le contenu dans un buffer. Dans le code qui suis fread me renvoie toujours zero:

int taille=0;

if (nState != VDL_STATE_START)
{
__DBG_LOG("Erreur DisplayFrame");
return VDL_ERR_DEFAULT;

}

//*********Recuperetion de l'image********
FILE *fp=fopen((char *)Filename,"rb+");
if(fp==NULL)
{
__DBG_LOG("Erreur d'ouverture du fichier");
return 1;
}

fseek(fp,0,SEEK_END);
taille=ftell(fp);
__DBG_LOG("taille fichier %i",taille);

fseek(fp,13,SEEK_SET);  //deplacement du curseur apres les 13octets de timer
unsigned char *pInbuf=(unsigned char *)malloc(sizeof(char)*taille);
if(fread(pInbuf,sizeof(char)*taille,1,fp)==0)
__DBG_LOG("erreur ecriture buffer"); //réecriture du fichier dans un buffer 
int nGotPicture = 0;
int nRead = 0;
fclose(fp);
0
tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005
4 août 2003 à 18:09
tu depasse la fin du fichier de 13 octets lorsque tu utilise le fread.

@+
tcok
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
misterzinzin Messages postés 112 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 26 janvier 2011 2
14 août 2005 à 13:35
bonjour, j'aimerais aussi connaitre la taille d'un fichier mais ouvert avec une classe fstream...histroire de faire du c++

remarque en C: faire un lseek (ou seek(...)) renvoit la position...
donc si on fait une petite fonction qui prend comme parametre un
descripteur de fichier...



int getTaille(int desc){

int pos= lseek(desc, 0, SEEK_CUR);//sauve la position dans le fichier

int taille= lseek(desc, 0, SEEK_END);

lseek(desc, pos, SEEK_SET);//restore la position dans le fichier

return taille;

}



cette fonction peut evidement se racourcir si on s'en fout de garder la position dans le fichier...

rem: teste sous linux mais pas sous windows... mais normalement... ca marche!



si on sais me dire comment faire avec une classe fstream ca m'interesse aussi (parceque j'ai pas trouvé.


moi, le seul, l'unique, ZinZin
0
Rejoignez-nous