Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Lettura file
Forum - C/C++ - Lettura file

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
markomatto (Normal User)
Newbie


Messaggi: 6
Iscritto: 02/11/2009

Segnala al moderatore
Postato alle 16:09
Lunedì, 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++

  1. void Rubrica::salva()
  2. {
  3. int i;
  4.           ofstream file;
  5.           file.open( "rubrica.txt", ios::out);
  6.           for(i=0;i<n;i++){
  7.                           file<<c[i].nome<<"   ";
  8.                           file<<c[i].cognome<<"   ";
  9.                           file<<c[i].prefisso<<"-";
  10.                           file<<c[i].numerocell<<endl;
  11.                           }
  12. file.close();
  13. }
  14. void Rubrica::apri()
  15. {
  16. int i;
  17.           fstream file;
  18.           file.open("rubrica.txt",ios::in);
  19.           if(!file)
  20.           {
  21.           for(i=0;i<n;i++){
  22.                          file>>c[i].nome;
  23.                          file>>c[i].cognome;
  24.                          file>>c[i].prefisso;
  25.                          file>>c[i].numerocell;
  26.                            }
  27.           }else{cout<<"Errore apertura file"<<endl;}
  28. file.close();
  29. }


Il salvataggio lo fa bene. Poi non riesco a leggere :-?. Nessun errore di compilazione.
Grazie in anticipo dell'aiuto :)

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 17:28
Lunedì, 02/11/2009

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

  1. ofstream out("file.txt", ios::out);
  2.  
  3. ifstream in("file.txt", ios::int);





Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
markomatto (Normal User)
Newbie


Messaggi: 6
Iscritto: 02/11/2009

Segnala al moderatore
Postato alle 19:58
Lunedì, 02/11/2009
Cioè così? Spiegati meglio. Grazie
Codice sorgente - presumibilmente C/C++

  1. void Rubrica::apri()
  2. {
  3. int i;
  4.       ifstream in("rubrica.txt",ios::in);
  5.       if(!file)
  6.       {cout<<"Errore apertura file"<<endl;
  7.      
  8.       }else{
  9.              for(i=0;i<n;i++){
  10.              file>>c[i].nome;
  11.              file>>c[i].cognome;
  12.              file>>c[i].prefisso;
  13.              file>>c[i].numerocell;
  14.                }
  15. }
  16. file.close();
  17. }


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:40
Lunedì, 02/11/2009

si così, funziona?


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
markomatto (Normal User)
Newbie


Messaggi: 6
Iscritto: 02/11/2009

Segnala al moderatore
Postato alle 20:44
Lunedì, 02/11/2009
Testo quotato

Postato originariamente da HeDo:


si così, funziona?



No non funziona.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:55
Lunedì, 02/11/2009
Testo quotato

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


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
markomatto (Normal User)
Newbie


Messaggi: 6
Iscritto: 02/11/2009

Segnala al moderatore
Postato alle 21:05
Lunedì, 02/11/2009
Testo quotato

Postato originariamente da HeDo:

Testo quotato

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.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 21:21
Lunedì, 02/11/2009
Testo quotato

Postato originariamente da markomatto:

Codice sorgente - presumibilmente C/C++

  1. void Rubrica::apri()
  2. {
  3. int i;
  4.       ifstream in("rubrica.txt",ios::in);
  5.       if(!file)
  6.       {cout<<"Errore apertura file"<<endl;
  7.      
  8.       }else{
  9.              for(i=0;i<n;i++){
  10.              file>>c[i].nome;
  11.              file>>c[i].cognome;
  12.              file>>c[i].prefisso;
  13.              file>>c[i].numerocell;
  14.                }
  15. }
  16. file.close();
  17. }




Ovviamente se dichiari "in" e poi usi "file" ti dice che "file" non c'è...


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
markomatto (Normal User)
Newbie


Messaggi: 6
Iscritto: 02/11/2009

Segnala al moderatore
Postato alle 21:27
Lunedì, 02/11/2009
Codice sorgente - presumibilmente C/C++

  1. void Rubrica::apri()
  2. {
  3. int i;
  4.       ifstream in("rubrica.txt",ios::in);
  5.       if(!file)
  6.       {cout<<"Errore apertura file"<<endl;
  7.      
  8.       }else{
  9.              for(i=0;i<n;i++){
  10.              file>>c[i].nome;
  11.              file>>c[i].cognome;
  12.              file>>c[i].prefisso;
  13.              file>>c[i].numerocell;
  14.                }
  15. }
  16. file.close();
  17. }



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.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo