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

Signaler
Messages postés
12
Date d'inscription
jeudi 19 octobre 2000
Statut
Membre
Dernière intervention
13 avril 2003
-
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
-
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

Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
bonjour,
fais tu bien une ouverture du fichier en mode binaire ?
sinon, une détection prématurée de fin de fichier peut arriver
Messages postés
12
Date d'inscription
jeudi 19 octobre 2000
Statut
Membre
Dernière intervention
13 avril 2003

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
Messages postés
12
Date d'inscription
jeudi 19 octobre 2000
Statut
Membre
Dernière intervention
13 avril 2003

c'est bon j'ai trouvé

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

merci je te dois une bière :)
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
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)
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
bien joué
je viens de te répondre exactement ça sur ton autre message,
j'aurais dû lire celui là d'abord !