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 :

Problème d'écriture d'une structure dans un fichier


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 28
    Par défaut Problème d'écriture d'une structure dans un fichier
    Bonjour, je suis en train de programmer une petite application qui manipule des bmp (format très simple), mais je rencontre un problème lors de l'écriture d'une bitmap.
    J'ai crée une structure représentant le header d'une bitmap:
    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
    typedef struct TagHBMP{
                             WORD  Sign;
    			 DWORD Csize;
    			 DWORD Resv;
    			 DWORD Offset;
    			 DWORD HeadSize;
    			 DWORD Width;
    			 DWORD Heigth;
    			 WORD  Plan;
    			 WORD  Depth;
    			 DWORD Comp;
    			 DWORD ImSize;
    			 DWORD HRez;
    			 DWORD VRez;
    			 DWORD Palette;
    			 DWORD ImPalette;
     
    }HBMP;
    Les pixels sont quant à eux dans la classe bitmap qui reprend cette structure et ils sont enregistrés sans aucun problème.
    Le problème est le suivant: lorsque j'enregistre en bloc cette structure (qui fait 54octets) le programme en copie 56 en injectant 1 octet après les 2 premiers. La fonction utilisée est un simple fwrite mais le problème ne vient pas de là vu que quand je demande la taille de ma structure il me retourne qu'elle fait 56 octets...Et ça cela reste un mystère, je n'ai jamais lus où appris que lors de la création d'une structure sa taille dépassait la somme de ses composantes.
    Toute aide est donc la bienvenue.

    ps: au cas où certains de connaissent pas les WORD et DWORD, WORD = 2 octets, DWORD = 4 octets.

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    C est peut etre lie au padding, l alignement realise par le compilo

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 28
    Par défaut
    Erf, je connaissait pas ce terme. Et est il possible que le problème disparaisse si je crée ce header de façon dynamique, pour que la structure soit mise en mémoire sans emplacement prédéfinis? Je crois que je vais tester ça.
    Merci de la réponse

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    il existe des directives pre-processeur pour faire ce que tu veux

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 28
    Par défaut
    Bon ba faire en dynamique ne change rien au problème (à part que les valeurs des octets injectés changent...).
    Sinon je suis prenneur pour tes directives =).Si tu pouvais m'expliquer qu'est ce que c'est s'il te plait.(car sinon je sent que je vais faire cette structure en faisant un champ de bit moi...)

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    fais une recherche surr le forum ca a deja ete cree me souviens plus exactement des directives

    push pack ( 1) ?
    push pop ?

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

Discussions similaires

  1. envoyer une structure dans un fichier et le comparer.
    Par gindrou dans le forum Débuter
    Réponses: 3
    Dernier message: 09/12/2008, 18h13
  2. Réponses: 8
    Dernier message: 02/12/2007, 02h03
  3. Réponses: 9
    Dernier message: 04/06/2007, 21h44
  4. stocker une structure dans un fichier ini?
    Par Mickey.jet dans le forum C
    Réponses: 6
    Dernier message: 13/09/2006, 16h57
  5. copier une structure dans un fichier
    Par brute dans le forum MFC
    Réponses: 18
    Dernier message: 10/03/2006, 14h30

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