Ho scritto questo codice
ma ha un problema. Quando apre il file la seconda volta e verifica il successo dell'operazionecodice:#include <cstdlib> #include <iostream> #include <fstream> using namespace std; struct studente { char nome[50]; int voto; }; int main(int argc, char *argv[]) { char filename[] = "studenti.dat"; studente stud; fstream fs; // Fase 1. Dati precedenti fs.open (filename,ios::binary | ios::in); if (!fs || fs.eof()) { // Non sono ancora presenti record cout << "Nessun dato già presente\n"; } else { // Stampiamo i record già presenti while (fs.read((char*)&stud,sizeof stud)) cout << stud.nome << "\t" << stud.voto << endl; } fs.close(); system ("pause"); // Fase 2. Inserimento nuovi dati fs.open (filename,ios::app | ios::binary); if (!fs) cout << "Errore nell'apertura del file"; int n; cout << "Studenti da aggiungere: "; cin >> n; for (int i = 0; i < n; i++) { cout << "STUDENTE " << i+1 << endl; cout << "Nome: "; cin >> stud.nome; cout << "Voto: "; cin >> stud.voto; fs.write((char*)&stud, sizeof stud); } fs.close(); system ("pause"); return 0; }
// Fase 2. Inserimento nuovi dati
fs.open (filename,ios::app | ios::binary);
if (!fs)
cout << "Errore nell'apertura del file";
stampa sempre il messaggio di errore, ed in effetti non scrive nulla sul file. Quale può essere il problema??

Rispondi quotando