Ciao a tutti, sono un nuovo iscritto, e avrei bisogno di un aiuto.
Dovrei stampare su un file binario 4 strutture i cui valori sono stati presi durante l'esecuzione del programma.
Quindi avrò: struttura di nome Libro, struttura Autore, struttura CasaEditrice, struttura Editore.

codice:
void Scrivi(Libro * l, Autore *a, CasaEditrice *c, Editore * e)
{
    File * file=NULL;
    file=fopen("Libri.dat", "wb");
    if(file==NULL)
      exit(-1);

     //Devo scrivere tutti i libri di un unico autore, quindi faccio una sola fwrite
     fwrite(a,sizeof(Autore), 1, file);

    //Ho un dubbio se dovendo stampare più libri di uno stesso autore, debba fare un for
    for(i=0;i<a->num_libri;i++)
       fwrite(l,sizeof(Libro), 1, file)
 
   //Oppure modificare la dimensione della fwrite
   fwrite(l,sizeof(Libro), a->num_libri, file);

   fclose(file);
}
Il dubbio sta anche nel fatto che secondo me, siccome va scritto tutto in un unico file, una volta che scrivo l'autore, poi devo chiudere il file e riaprirlo per i libri con modalità "ab".
Il problema è che certe volte mi dà molti più libri di quelli che effettivamente l'autore ha scritto e i dati del primo libro non corrispondono a quelli inseriti durante l'esecuzione, e quelli dopo invece sono tutti a 0. Penso quindi che stia sbagliando a scrivere sul file.