Bonjour,
Voila des années que j'ai pas touché une ligne de code et là je dois debugger un truc dont je ne vois pas ou se situe le problème.
J'ai un petite bout de programme qui lit un fichier (texte) et remplit un buffer. C'est tout bete, et pourtant ça ne marche pas. Ou du moins ça ne marche pas avec un nouveau fichier qu'on vient de me fournir, alors que jusque là il n'y avait pas de problèmes. Certes le fichier incriminé est plus gros que ceux traités d'habitude, mais il n'est pas non plus monstrueux (32ko).
Le problème est que le fread que je fait me remplit bien le buffer, mais avec plus d'infos que lu dans mon fichier. Plus precisement, une partie de la fin du fichier se retrouve dupliqué plusieurs fois dans mon buffer. J'ai un buffer plus gros que le contenu de mon fichier!
Voila le bout de code en question :
Le fichier lu est en piece jointe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 char *Buf; struct _stat Buffer; FILE *fp; /* Information sur le fichier */ _stat( nom_fichier, &Buffer ); /* Allocation pour hargement du fichier en mémoire */ Buf = malloc( Buffer.st_size+1 ); /* Ouverture du fichier */ fp = fopen( nom_fichier, "r" ); /* Lecture du fichier */ fread( Buf, sizeof( char ), Buffer.st_size, fp ); /* Fermeture du descripteur */ fclose ( fp );
C'est certainement une erreur de débutant (ce que je suis redevenu), mais impossible de la trouver, je suis aujourd'hui trop débordé pour arriver à reflechir correctement aujourd'hui.
Merci donc à ceux qui m'apporteront un coup de main (et puis bon reveillon à tout ceux qui liront ce post, on est pas que des betes non plus).
Partager