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 :
Merci pour votre aide,
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
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; }
Guilhem.
Partager