markomatto (Normal User)
Newbie
Messaggi: 6
Iscritto: 02/11/2009
|
Ciao a tutti sono nuovo. Ho un problema con la lettura di un file.
Dopo avere salvato un file ("rubrica.txt"), non riesco poi a caricarla sulle variabili.
Codice sorgente - presumibilmente C++ |
void Rubrica::salva() { int i; ofstream file; file.open( "rubrica.txt", ios::out); for(i=0;i<n;i++){ file<<c[i].nome<<" "; file<<c[i].cognome<<" "; file<<c[i].prefisso<<"-"; file<<c[i].numerocell<<endl; } file.close(); } void Rubrica::apri() { int i; fstream file; file.open("rubrica.txt",ios::in); if(!file) { for(i=0;i<n;i++){ file>>c[i].nome; file>>c[i].cognome; file>>c[i].prefisso; file>>c[i].numerocell; } }else{cout<<"Errore apertura file"<<endl;} file.close(); }
|
Il salvataggio lo fa bene. Poi non riesco a leggere . Nessun errore di compilazione.
Grazie in anticipo dell'aiuto
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
beh per prima cosa controlla quel if(!file) perchè è if(file), ovvero se l'apertura ha avuto successo.
Oltretutto ricordati che puoi aprire un file direttamente quando istanzi lo stream, ovvero:
Codice sorgente - presumibilmente Plain Text |
ofstream out("file.txt", ios::out);
ifstream in("file.txt", ios::int);
|
|
|
markomatto (Normal User)
Newbie
Messaggi: 6
Iscritto: 02/11/2009
|
Cioè così? Spiegati meglio. Grazie
Codice sorgente - presumibilmente C/C++ |
void Rubrica::apri()
{
int i;
ifstream in("rubrica.txt",ios::in);
if(!file)
{cout<<"Errore apertura file"<<endl;
}else{
for(i=0;i<n;i++){
file>>c[i].nome;
file>>c[i].cognome;
file>>c[i].prefisso;
file>>c[i].numerocell;
}
}
file.close();
}
|
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
si così, funziona?
|
|
markomatto (Normal User)
Newbie
Messaggi: 6
Iscritto: 02/11/2009
|
Postato originariamente da HeDo:
si così, funziona? |
No non funziona. |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da markomatto:
No non funziona.
|
se questo è il tuo atteggiamento: nessun codice di errore, nessun esempio di output sbagliato, nessuna informazioni su quello che fa quando "sbaglia"... purtroppo la mia sfera magica è a riparare e non posso aiutarti.
Ultima modifica effettuata da HeDo il 02/11/2009 alle 20:56 |
|
markomatto (Normal User)
Newbie
Messaggi: 6
Iscritto: 02/11/2009
|
Postato originariamente da HeDo:
Postato originariamente da markomatto:
No non funziona.
|
se questo è il tuo atteggiamento: nessun codice di errore, nessun esempio di output sbagliato, nessuna informazioni su quello che fa quando "sbaglia"... purtroppo la mia sfera magica è a riparare e non posso aiutarti.
|
Praticamente mi da un errore di compilazione.
"file was not declarate."
Tutte le librerie necessarie sono incluse. Il codice scritto da me prima sembra giusto, l'ho fatto leggere a molta altra gente. Ma niente. |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da markomatto:
Codice sorgente - presumibilmente C/C++ |
void Rubrica::apri()
{
int i;
ifstream in("rubrica.txt",ios::in);
if(!file)
{cout<<"Errore apertura file"<<endl;
}else{
for(i=0;i<n;i++){
file>>c[i].nome;
file>>c[i].cognome;
file>>c[i].prefisso;
file>>c[i].numerocell;
}
}
file.close();
}
|
|
Ovviamente se dichiari "in" e poi usi "file" ti dice che "file" non c'è... |
|
markomatto (Normal User)
Newbie
Messaggi: 6
Iscritto: 02/11/2009
|
Codice sorgente - presumibilmente C/C++ |
void Rubrica::apri()
{
int i;
ifstream in("rubrica.txt",ios::in);
if(!file)
{cout<<"Errore apertura file"<<endl;
}else{
for(i=0;i<n;i++){
file>>c[i].nome;
file>>c[i].cognome;
file>>c[i].prefisso;
file>>c[i].numerocell;
}
}
file.close();
}
|
Ovviamente se dichiari "in" e poi usi "file" ti dice che "file" non c'è...
Ora nessun errore di compilazione. Ma nel momento in cui provo a stampare i valori (nome... numerocell) non esce nulla. Come se il file non si fosse aperto, o come se i valori non sono stati passati nei parametri.
|
|