binäre datei + dynamisches array



  • Hi!
    Wenn ich dieses struct-array binär in eine datei schreibe, es ist dynamisch, ich weiss nie wieviele elemente es hat

    struct Album
    {
    Track *tracks;
    int iNumTracks;
    }
    

    wie kann ich da mit fread dann aus ner binären datei lesen, weil ich muss es ja irgendwie initialisieren ...

    greets,
    cNc



  • /* speichern: */
    void save_track(Track *t, FILE *f);
    void save_album(struct Album *a, FILE *f) {
      int i;
      fwrite(&a->iNumTracks, sizeof(int), 1, f);
      for (i = 0; i < a->iNumTracks; ++i)
        save_track(&a->tracks[i], f);
    }
    
    /* laden: */
    void load_track(Track *t, FILE *f);
    void load_album(struct Album *a, FILE *f) {
      int i, n;
      fread(&n, sizeof(int), 1, f);
      a->iNumTracks = n;
      a->tracks = malloc(n * sizeof(Track));
      for (i = 0; i < n; ++i)
        load_track(&a->tracks[i], f);
    }
    

    Fehlerbehandlung sei dem Leser zur Übung überlassen.



  • danke schön 🙂
    hab wohl irgendwie nen denkfehler gemacht ... wollte iegtnlich
    fwrite(&album, 1, file);
    und dann
    fread(&album, 1, file);

    deswegen wusste ich nicht wie ich dann den speicher allozieeren soll 😉

    greets,
    cNc


Anmelden zum Antworten