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 :

probleme avec fread


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 15
    Points
    15
    Par défaut probleme avec fread
    Salut à tous.

    Je ne suis pas vraiment un débutant en C, mais j'ai un problème de "débutant".

    C'est un soucis avec fread...

    Je dois lire un fichier dont les 17 premiers octets contiennent l'en-tête et qqs informations.
    Ensuite, les 25 245 000 autres contiennent les données.

    Pas de problème pour lire l'entête. Par contre, les données, ca plante à tous les coups.

    Je réserve un peu de mémoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier->img=malloc(3*Fichier->width*Fichier->height);
    (ca réserve donc un buffer de 25 245 000 octets et ça passe).

    Ensuite, je fais mon fread :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fread(Fichier->img,1,3*Fichier->width*Fichier->height,fichier);
    Et là, plusieurs choses peuvent se produire : Soit un plantage pur et simple signalé par window$, soit ça met trois plombes (bref, ça ne se termine pas).

    Si jamais je demande de lire moins de 100 octets, ca passe sans soucis. Si je demande plus de 100, ça ne marche plus.

    Vous avez une idée pour me débloquer ? Car je n'imagine pas lire 200 000 fois 100 octets.

    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    J'ai trouvé tout seul la solution. C'est vraiment une erreur de débutant : avant d'utiliser le pointeur, je n'ai pas fait attention à lui assigner la valeur NULL après l'avoir déclaré.

    Le "soucis" est que, voulant trop bien faire, j'avais mis un malloc si le pointeur n'était pas NULL et un realloc sinon. Et comme le pointeur n'était pas toujours NULL, le realloc buggait.

    Rien à voir donc avec le fread.

    Ce qui m'a mis la puce à l'oreille, c'est quand j'ai changé de PC et que j'ai essayé de compiler sous linux. Il m'a signalé un warning avec le realloc (chose qui n'apparaissait pas sous windows avec mingw) et ensuite, quand je lançais le progamme, il me signalait une erreur de segmentation qui n'apparaissait pas sous windows.

    Moralité : Vive Linux

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

Discussions similaires

  1. Probleme avec fread ou fwrite.. binaire pas lisible ?
    Par titimoi dans le forum Débuter
    Réponses: 16
    Dernier message: 16/01/2009, 13h14
  2. Réponses: 4
    Dernier message: 18/11/2007, 10h20
  3. probleme avec fread
    Par booby dans le forum C
    Réponses: 10
    Dernier message: 06/04/2006, 17h21
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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