Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problemi con lettura di tutto il file text!! aiuto
Forum - C/C++ - problemi con lettura di tutto il file text!! aiuto

Avatar
zamers (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/09/2009

Segnala al moderatore
Postato alle 18:01
Mercoledì, 23/09/2009
ciao a tutti sono nuovo.. alla fine dopo tanti aiuti che ho avuto leggendo il vostro forum mi sono dovuto iscrivere per chiedere un aiuto su una cosa che, magari per voi è semplice, ma io è da due giorni che nn riesco a venirci a capo ed è per questo che alla fine ho dovuto iscrivermi qua.. l'ultima speranza!!

allora, il programma è un esercizio e tratta una lista di prenotazioni di voli.

il mio programmino crea il file prenotazioni.txt e lo crea con i seguenti dati:

prenotazioni.txt:

========================
Numero Prenotazione: 1
Data della prenotazione: 23 - 9 - 2009
Località di partenza: MILANO
Aeroporto di partenza: MXP - MILANO MALPENSA TERMINAL 1
Data e ora della partenza: 24 - 9 - 2009 alle ore 14.35
Localita' di arrivo: OLBIA
Aeroporto di arrivo: OLB - OLBIA COSTA SMERALDA
Data e ora di arrivo: 24 - 9 - 2009 alle ore 15.35
Prezzo: 87.43 Euro
========================
     *     PRENOTAZIONE CONFERMATA     *


========================
Numero Prenotazione: 2
Data della prenotazione: 25 - 9 - 2009
Località di partenza: ROMA
Aeroporto di partenza: ROM - ROMA FIUMICINO
Data e ora della partenza: 26 - 9 - 2009 alle ore 15.32
Localita' di arrivo: BARI
Aeroporto di arrivo: BAR - BARI SAN NICOLA
Data e ora di arrivo: 26 - 9 - 2009 alle ore 16.15
Prezzo: 67.25 Euro
========================
     *     PRENOTAZIONE CONFERMATA     *



.ecc...ecc..

ora, ho creato una funzione che possa far leggere tutto il file (con le righe tutte precise come nel file txt e nn tutto attaccato o senza spazi.. in pratica la stessa cosa e formattata uguale di come è nel file txt) ed è questa:


Codice sorgente - presumibilmente C/C++

  1. void voli()
  2. {
  3.  
  4.  
  5. system("cls");
  6.         cout << "Lista dei voli prenotati Alitalia\n\n";
  7. ifstream stream1("prenotazioni.txt");
  8.  
  9. char data_array[100000];      //I DATI
  10.  
  11.  
  12.  
  13.                         if(!stream1) //se nn lo trova
  14.             {
  15.                         cerr << "Errore nell'apertura del file delle prenotazioni.\n\n" << endl;
  16.                                                 exit(8);
  17.             }
  18.  
  19.                        
  20.                   stream1 >> data_array;
  21.  
  22.  
  23.                        
  24.                
  25.                 cout << "il contenute del file e' \n" << data_array << "\n";          
  26.  
  27.  
  28.                  
  29.                                 cout << "Le prenotazioni sono state visualizzate con successo.\n\n" << endl;
  30.    
  31.  
  32. stream1.close();
  33.  
  34. }



e invece perché mi scrivo solamente la prima riga del file e poi basta???
cioè mi stampa solo questo pezzo del file txt:

========================

perché????
è da 1 giorno che mi sto sbattendo ma ancora nn sono riuscito



ho provato anche in questo modo di c:
Codice sorgente - presumibilmente C/C++

  1. FILE* stream;
  2. char buf[30];
  3.  
  4. stream=fopen("prenotazioni.txt","r");
  5.  
  6. while( fscanf(stream,"%s",buf) != EOF )
  7. fprintf(stdout,"%s",buf);
  8.  
  9. fclose(stream);



ma mi stampa tutto il file ma tutto attaccato cioè senza rispettare gli spazi!!

vi prego datemi un aiuto se no nn riuscirò mai a risolvere sto esercizio vi posso ringraziare se mi dite un modo :(

PM Quote
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Segnala al moderatore
Postato alle 18:08
Mercoledì, 23/09/2009
il tuo codice va benissimo, basta che fai ripetere la parte di lettura e scrittura
finchè non arrivi ad EOF() con un ciclo while!! ;)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:22
Mercoledì, 23/09/2009
Dai un'occhiata a questo

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     system("cls");
  10.     cout << "Lista dei voli prenotati Alitalia\n\n";
  11.     ifstream stream1("prenotazioni.txt");
  12.  
  13.         char data_array[1000][200];
  14.  
  15.         if(!stream1) //se nn lo trova
  16.         {
  17.                 cerr << "Errore nell'apertura del file delle prenotazioni.\n\n" << endl;
  18.                 exit(8);
  19.         }
  20.  
  21.         int i=0;
  22.         while(!stream1.eof())
  23.                 stream1.getline(data_array[i++], 1000);
  24.  
  25.         cout << "il contenute del file e'" << endl;
  26.         for(int j=0; j<i; j++)
  27.                 cout << data_array[j] << endl;
  28.  
  29.         cout << "Le prenotazioni sono state visualizzate con successo.\n\n" << endl;
  30.      
  31.         stream1.close();
  32.  
  33.         return 0;
  34. }


Ultima modifica effettuata da theprogrammer il 23/09/2009 alle 18:55
PM Quote
Avatar
zamers (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/09/2009

Segnala al moderatore
Postato alle 19:31
Mercoledì, 23/09/2009
grazie mille!!!!!!

funziona alla perfezione ed è esattamente ciò che stavo cercando di fare!!!

grazie ancora !!:k::k:

PM Quote