Urgent:lecture de fichier limitée...comprends pas

cs_yeager Messages postés 12 Date d'inscription jeudi 19 octobre 2000 Statut Membre Dernière intervention 13 avril 2003 - 17 mars 2003 à 11:06
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 17 mars 2003 à 14:34
Bonjour

j'ai besoin de lire un fichier par bloc de __int64(64 bits). Chaque bloc est mit dans une structure pour former une liste chaînée.
Mon problème c'est que quelque soit la taille de mon fichier, je ne peux lire que 377 blocs et pas un de plus. J'utilise feof pour arrêter la lecture du fichier. Je ne limite jamais la taille de ma liste, alors je me demande si le problème ne vient pas de la fonction feof....merci d'avance pour votre aide. J'aurais besoin de la réponse le plus rapidement possible

Merci

yeager

5 réponses

cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
17 mars 2003 à 11:21
bonjour,
fais tu bien une ouverture du fichier en mode binaire ?
sinon, une détection prématurée de fin de fichier peut arriver
0
cs_yeager Messages postés 12 Date d'inscription jeudi 19 octobre 2000 Statut Membre Dernière intervention 13 avril 2003 1
17 mars 2003 à 11:39
Pardon mais qu'appelles tu ouverture en mode binaire?

moi je fais ça:

if ((fichier_message = fopen(filename, "r")) != NULL)
{
courant = (struct variable*)malloc(sizeof(struct variable));
if ((fichier_message = fopen(filename, "r")) != NULL)
fread(&(courant->caractere),sizeof
(__int64),1,fichier_message);
courant->triplet_suiv = NULL;
message = courant;

while (!feof(fichier_message))
{
courant->triplet_suiv = (struct variable*)malloc
(sizeof(struct variable));
courant = courant->triplet_suiv;
fread(&(courant->caractere),sizeof
(__int64),1,fichier_message);
courant->nbr_caractere = i++;
courant->triplet_suiv = NULL;
}
fclose(fichier_message);
}

j'utilise fwrite et fread pour ecrire et lire en binaire
0
cs_yeager Messages postés 12 Date d'inscription jeudi 19 octobre 2000 Statut Membre Dernière intervention 13 avril 2003 1
17 mars 2003 à 11:59
c'est bon j'ai trouvé

il fallait mettre rb et wb à l'ouverture du fichier

merci je te dois une bière :)
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
17 mars 2003 à 14:30
alors essaie donc la ligne suivanteif ((fichier_message fopen(filename, "r b ")) ! NULL)

comme ça, les octets lus ne peuvent être interprétés comme un CTRL+Z (fin de fichier)
0

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

Posez votre question
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
17 mars 2003 à 14:34
bien joué
je viens de te répondre exactement ça sur ton autre message,
j'aurais dû lire celui là d'abord !
0
Rejoignez-nous