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++ - Problema lettura file
Forum - C/C++ - Problema lettura file

Avatar
dacanalr (Normal User)
Rookie


Messaggi: 26
Iscritto: 23/07/2009

Segnala al moderatore
Postato alle 17:50
Giovedì, 23/07/2009
Salve a tutti !
Mi sto avvicinando al c++ e visto che ho alcuni problemi ho pensato di iscrivermi a questo forum ( tra i tanti che ci sono mi è sembrato il migliore ! ).

Ho bisogno di leggere tutti i caratteri di un file e salvare in un array quante a ci sono, quante b ecc.. anche i byte che non sono caratteri.

Il programma l'ho impostato così:


Codice sorgente - presumibilmente C#

  1. int main(int argc, char *argv[])
  2.         double a[255]={0};
  3.         int elem = 0;
  4.         double entropia = 0;
  5.  
  6.         if(argc != 2)
  7.         {      
  8.                 cout << "Utilizzo errato\nInserire anche il nome del file da elaborare!";
  9.                 return 1;
  10.         }
  11.        
  12.         ifstream in(argv[1],ios::binary);
  13.         int ch;
  14.         while(!in.eof())
  15.         {      
  16.                 ch = in.get();
  17.                 cout << ch << " " ;
  18.                 //if(ch==-1) continue;
  19.                 a[ch]++;
  20.                 elem++;
  21.         }
  22.         cout << elem << "\n";
  23. }



problema : gli do in pasto un file RAR o un PDF ma lui non legge tutti i caratteri ! Ad esempio nel file file RAR ne legge solamente quattro ! Ho utilizzato classi/metodo sbagliati ? mi sapreste dare una dritta? in.get() ritorna un carattere ma se trova un byte che non è un carattere come si comporta? (ho provato a cercare ma non ho trovato molto...)


grazie a tutti quelli che leggeranno, intanto continuo con il giro nel forum... Ciao

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 17:41
Venerdì, 24/07/2009
Il problema è che tu crei un array di 255 elementi(cioè da 0 a 254) invece ne devi creare uno di 256 elementi(per memorizzare i caratteri con ascii 255). Ho testato il tuo programma sul mio pc(con file rar ed exe) e funziona alla perfezione con questa piccola modifica. Comunque perchè utilizzi un array di double invece di un array di int(non credo che un file possa superare i 2000000000 di caratteri uguali)?

PM Quote
Avatar
dacanalr (Normal User)
Rookie


Messaggi: 26
Iscritto: 23/07/2009

Segnala al moderatore
Postato alle 18:26
Venerdì, 24/07/2009
Ciao, uso un array di double perché poi faccio delle divisioni sugli elementi degli array..

Grazie comunque !

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:59
Venerdì, 24/07/2009
Testo quotato

Postato originariamente da dacanalr:

Ciao, uso un array di double perché poi faccio delle divisioni sugli elementi degli array..



E che vuol dire? Perche', non puoi fare le divisioni con gli interi?

PM Quote
Avatar
dacanalr (Normal User)
Rookie


Messaggi: 26
Iscritto: 23/07/2009

Segnala al moderatore
Postato alle 20:31
Venerdì, 24/07/2009
Si che puoi ma se hai bisogno di avere anche le cifre decimali!
Ad es: a /= elem  i=0...255

PM Quote