Guarda ti metto tutto il codice della funzione:

void prog::saveOnFile(){
FILE *myFile;
Persona* temp = new Persona(*lista);
Persona* tempo;// = new Persona();
Persona* index = lista;
myFile = fopen("prova.bin", "a+b");
while(index!=0){
*temp = *index;
cout<<"\n*** "<<temp->getNome()<<" ***";
fwrite(&temp, sizeof(Persona),1,myFile);
fflush(myFile);
index=index->getNext();
}
fclose(myFile);
cout<<"\n***************************************** ******";
myFile = fopen("bprova.bin", "r+b");
rewind(myFile);
while(!feof(myFile)){
fread(&tempo, sizeof(Persona),1,myFile);
cout<<"\n*** "<<tempo->getNome()<<" *** - LETTO";
cout<<"\n*** "<<tempo->getCognome()<<" *** - LETTO";
cout<<"\n*** "<<tempo->getCodFisc()<<" *** - LETTO";
cout<<"\n*** "<<tempo->getUserId()<<" *** - LETTO";
cout<<"\n*** "<<tempo->getPwd()<<" *** - LETTO";
}
fclose(myFile);
}


All'inizio me li stampa giusti, poi quando viene lanciata la lettura da file mi stampa solo i parametri dell'ultimo, ed oltretutto una volta in più rispetto al numero di inserimenti...