oregon ha scritto:
In app non farai altro che aggiungere. Deve essere in out ma binary e devi conoscere le regole per farlo, regole che vanno studiate prima. Leggi questo
https://courses.cs.vt.edu/cs2604/fall02/binio.htm
Ciao, con un pò di documentazione trovata in rete, oltre che al link che mi hai fornito, sono riuscito a trovare e sviluppare una funzione:
void modifica(){
fstream f;
f.open(NOMEARCH.c_str(), ios::in | ios::out | ios::binary);
bool trovato=false;
int n;
cout<<"Inserire l'id da modificare: ";
cin>>n;
while(f.read((char*) &rubrica, sizeof(rubrica))){
if(n==rubrica.id){
trovato=true;
int pos=f.tellg();
pos=pos-sizeof(rubrica);
f.seekp(pos, ios::beg);
cin.ignore();
cout<<"Inserire il nome: ";
cin.getline(rubrica.nome, 20);
cout<<"Inserire il numero: ";
cin>>rubrica.numero;
f.write((char*)&rubrica, sizeof(rubrica));
}
}
if(!trovato){
cout<<"Id non presente in rubrica"<<endl;
}
f.close();
}
Premesso che funziona senza problemi, è corretta?
Un'altra cosa: usare sempre fstream invece che di ofstream per la scrittura, e ifstream per la lettura, è comunque corretto?