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