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.