[fread] Problème de lecture de buffer
Bonjour à tous,
mon intention est de faire un programme qui met les données d'une BMP dans un buffer et qui les affiche à l'écran. J'ouvre le fichier, je récupère sa taille, le lis et le recopie dans un buffer. A priori tout se passe bien. Par contre quand je veux faire afficher le buffer par une boucle, le programme semble ne jamais sortir de la boucle (dont la condition de sortie est la taille des données à lire, soit la taille du buffer) et finit par faire une erreur pop up la mémoire ne peut pas être "read".
Voilà le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#include <stdio.h>
#include <stdlib.h>
#define TEST "C:\\C++-Programme\\Guilhem_Martin\\test.bmp" // image BMP 24 bits a traiter
int main () {
FILE * pFile; // Pointeur sur le fichier
long lSize; // Taille du fichier, puis du buffer
int * buffer; // Buffer d'entier
int i; // pour la boucle
pFile = fopen ( TEST , "rb" ); // Ouverture du fichier
if (pFile==NULL)
{
printf("Cannot open the file\n");
exit (1);
}
// Récupérer la taille du fichier
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
fseek (pFile,55,SEEK_SET); // Positionner le curseur au début des données BMP (Les 54 premières données étant l'en tête)
lSize = lSize - 54; // Le buffer ne contiendra que les données BMP
// allocation mémoire pour contenir toutes les données BMP
buffer = (int*) malloc (lSize * sizeof(int));
if (buffer == NULL)
{
printf("Error by buffer allocation \n");
exit (2);
}
// copie des données BMP du fichier dans le buffer
fread (buffer,1,lSize,pFile);
printf("lSize : %d \n",lSize);
for(i=0;lSize;i++) // Boucle qui pose problème
printf("%d,",buffer[i]);
// Fin : fermer et libérer
fclose (pFile);
free (buffer);
return 0;
} |
Merci pour votre aide,
Guilhem.