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.
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".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 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.

Rispondi quotando