struct, union und file



  • Hallo,
    ich habe eine C-Anfänger-Frage.
    Ich möchte Daten in eine Datei schreiben bzw. aus der Datei lesen, die wie folgt aufgebaut sein können:

    struct DLT_Header_Struct
    {
    uint64 dataID;
    uint32 info;

    struct datatype
    {
    uint16 first:1;
    uint16 type:4;
    uint16 cript:1;
    }datatype;

    union {
    uint16 header;
    struct dataheader
    {
    uint16 var:1;
    uint16 funcIN:1;
    uint16 funcOUT:1;
    uint16 reserve:12;
    }dataheader;
    uint16 control;
    uint16 msg;
    }type;

    uint16 number;
    uint16 length;

    union
    {
    int8* p8_data;
    int16* p16_data;
    int32* p32_data;
    float64* pf64_data;
    void * prawInfo;
    }newInfo;
    };

    Kann jemand mir bitte helfen. Ich habe keine Ahnung wie das realisiert werden kann.

    Danke und Grüße
    Bahanfar



  • Es ist immer ungünstig, eine union frei im Raum stehen zu haben - normalerweise solltest du auch irgendwo eine Information haben, welches der Elemente gerade "gültig" ist (C ist das egal). (und bei deinen Zeigern solltest du auch notieren, wie groß der dahinterliegende Speicherbereich ist)

    Wenn du solche Feinheiten bedacht hast, schau dir mal fwrite() und fread() an (wobei es wenig Sinn macht, Zeiger zu speichern - speichere lieber die Daten, auf die der Zeiger verweist).


Log in to reply