speichern von Teilen einer Struktur



  • Hallo Allerseits!

    Ich habe folgende Struktur in einer Header-Datei vereinbart.

    typedef struct {
    int FIFIdType;
    char FileName[100];
    char Description[80];
    char Date[6];
    int M;
    int N;
    int ArrayType;
    float Xmin;
    float Ymin;
    float SignalMin;
    float SignalMax;
    float **Signal;
    } Image;

    In einer anderen Funktion WritePET(Image * MyImage) will ich Teile dieser Struktur speichern. Die komplette Struktur kann ich durch

    fwrite(MyImage,sizeof(Image),1,OutFile);

    for(m=0;m<MyImage->M;m++)
    if((fwrite(MyImage->Signal[m],sizeof(float),
    MyImage->N*MyImage->ArrayType,OutFile))!=MyImage->N*MyImage->ArrayType)
    Error("Error writing to file: `%s'",OutFileName);

    in eine Datei ausschreiben. Mein Frage ist nun, wie ich es am einfachsten und sinnvollsten Anstelle, wenn ich zum Beispiel nur MyImage->Description, MyImage->M und MyImage->Xmin aus der Struktur am Anfang der Datei speichern will, bevor MyImage->Signal ausgeschrieben wird.

    Danke und Gruss john.



  • O.k., nach einigen probieren bin ich doch nun selbst auf die Lösung gekommen.

    Bei Character-Variablen bzw. Arrays muss dann anscheinend so etwas wie

    fwrite(&MyImage->Description,sizeof(MyImage->Description),1,OutFile); oder
    fwrite(&MyImage->Description,sizeof(char[80]),1,OutFile);

    stehen und bei integer oder float

    fwrite(&MyImage->M,sizeof(int),1,OutFile);
    fwrite(&MyImage->Xmin,sizeof(float),1,OutFile);



  • bist du sicher dass du das ins richtige Forum gestellt hast? Fuer mich schaut das eher nach normalen C aus, nicht nach C#. Ausserdem verwende bitte Code-Tags.

    Deine Frage hast du eh selber geloest 🙂



  • Blue-Tiger schrieb:

    bist du sicher dass du das ins richtige Forum gestellt hast? Fuer mich schaut das eher nach normalen C aus, nicht nach C#. Ausserdem verwende bitte Code-Tags.

    Deine Frage hast du eh selber geloest 🙂

    Stimmt ... jetzt wo du es sagt, bin ich mir net mehr so sicher. 😃 Ääähm , gehört nach ANSI C, nun ja beim nächsten Mal. Trotzdem Danke für die Hinweise.


Anmelden zum Antworten