Oppure

Loading
21/02/07 16:46
dyana
Ciao a tutti, non uso da molto il c++ e sono incappata in un problema, ho creato un file binario nel quale metto degli oggetti con il comando fwrite(...).
Fino a quì nessun problema a quanto pare, senonchè dopo aver chiuso il file e riaperto con l'istruzione fopen(...) in modalità di lettura "r+" utilizzando la funzione fread(...) mi legge l'ultimo elemento inserito.

Ho provato con le varie funzioni "rewind(...) e fseek(...)" ma nulla.

I casi sono due, o ogni volta che scrivo su file mi sovrascrive il dato precedente (..improbabile); oppure non so come tornare all'inizio del file.

Qualcuno gentilmente mi può dare una mano?
Ciao a tutti!
aaa
22/02/07 9:23
Reese
Secondo me sovrascrivi ogni volta. Come usi il fwrite()?
Ultima modifica effettuata da Reese 22/02/07 9:24
aaa
22/02/07 10:33
dyana
si mi sono accorta di sovrascrivere ogni volta, ora però ho un altro problema, quando lancio il loop di lettura l'utimo dato scritto me lo legge 2 volte, anche se effettivamente ho controllato il numero di volte che fa il loop in scrittura è normale.
aaa
22/02/07 12:36
Reese
Beh, prova a postare un po' di sorgente, cosi' ti si puo' dire qualcosa di piu'.
aaa
22/02/07 12:51
dyana
Dovrebbe essere così..

void banca::saveOnFile(){
FILE *myFile;
Persona temp;
Persona* index = lista; //punta al primo elemento della lista
cout<<"\n\n "<<n<<"\n\n ";
myFile = fopen("banca.bin", "w+b";);
while(index!=0){
temp = *index;
cout<<"\n*** "<<temp->getNome()<<" - SCRITTO ***";
fwrite(&temp, sizeof(Persona),1,myFile);
fflush(myFile);
index=index->getNext();

}

fclose(myFile);
cout<<"\n***********************************************";
myFile = fopen("banca.bin", "r+b";);
while(!feof(myFile)){
fread(&tempo, sizeof(Persona),1,myFile);
cout<<"\n*** "<<tempo->getNome()<<" *** - LETTO";
cout<<"\n*** "<<tempo->getCognome()<<" ***";
cout<<"\n*** "<<tempo->getCodFisc()<<" ***";
cout<<"\n*** "<<tempo->getUserId()<<" ***";
cout<<"\n*** "<<tempo->getPwd()<<" ***";
}
fclose(myFile);
getchar();
system("cls";);
}
aaa
25/02/07 13:32
netarrow
visto che usi il C++ potresti usare fstream e iostream del namespace std, quindi con gli operatori le varie classi come ifstream ecc... che rendono tutto più pulito e chiaro. ;-)
aaa