IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[fread] Problème de lecture de buffer


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut [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 : 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.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Ta boucle est mal écrite. Essayes plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(i=0;i<lSize;i++)
         printf ("%d,",buffer[i]);
    Salut.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Merci beaucoup ! C'était bien ca...

    C'est pas possible, se gourer dans la syntaxe de for comme ca, et se relire sans revoir !

    Guilhem

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de lecture avec fread qui retourne 0
    Par bru.antoine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 25/07/2012, 17h31
  2. problème de lecture bit fseek + fread
    Par harmonips dans le forum MATLAB
    Réponses: 2
    Dernier message: 24/05/2012, 20h52
  3. Problème de Lecture avec fread, feof retourne 16
    Par neoangelo5 dans le forum C
    Réponses: 10
    Dernier message: 14/04/2011, 15h37
  4. Réponses: 2
    Dernier message: 11/05/2010, 09h27
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo