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++ - Dato un file, crearne 1 altro rendendolo maiuscolo
Forum - C/C++ - Dato un file, crearne 1 altro rendendolo maiuscolo

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Vi posto questo breve programmino, per ora cè solo il codice in se e per se, poi valuterò come migliorarlo / rimuovere eventuali errori.
Il problema praticamente è che non riesce a rendere maiuscoli file piu grandi di una decina di righe, ma mi pare stranp che non si possa farlo per file un po' + grandi... vabè vedete voi. Chiedo scusa se magari ho fatto delle scelte poco consone ma sono proprio agli inizi. ;)

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4. #include <cctype>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.  cout << "# Inserire il percorso del file da rendere maiuscolo\n";
  10.   char percorso[200];
  11.    gets(percorso);
  12.     ifstream min(percorso,ios::binary);
  13.     ofstream max("maiuscolo.txt",ios::binary);
  14.      char contenuto[sizeof min]; /* gli ho dato come indice il sizeof del file per renderlo in qualche modo direttamente proporzionale alla grandezza del file*/
  15.         min.read(contenuto, sizeof min);
  16.         min.close();
  17.           char contenutoFinal[strlen(contenuto)+1];
  18.            for(int i = 0; i <= strlen(contenuto); i++) contenutoFinal[i] = toupper(contenuto[i]);
  19.         max.write(contenutoFinal, sizeof contenutoFinal);
  20.         max.close();
  21.  cin.get();
  22. return 0;
  23. }


PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 19:26
Venerdì, 18/05/2007
visto che usi C++, ti consiglio di usare la classe string al posto dei puntatori a carattere (la soluzione al quanto bestemmiosa che si usava nel caro vecchio C).

Ultima modifica effettuata da netarrow il 18/05/2007 alle 19:27
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:16
Venerdì, 18/05/2007
Bhè io ancora non ho studiato le classi, come vedi sono agli inizi..
Qualcuno invece saprebbe dirmi perchè non funziona con file + grandi di 10 righe( più o meno) ?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 8:27
Sabato, 19/05/2007
direi che il sizeof min non vada bene, per avere le dimensioni del file e allocare un vettore di dimensioni opportune si fa così:

Codice sorgente - presumibilmente C/C++

  1. ...
  2. min.seekg (0, ios::end);
  3. int length = min.tellg();
  4. min.seekg (0, ios::beg);
  5. ...
  6. char* buffer = new char[length];
  7. // o se usi stile C
  8. // char* buffer = (char*) malloc(sizeof(char) * length);



cmq ora sono a scuola e non ho un compilatore C/C++ per provare (noi siamo antiquati, facciamo COBOL -.- ).

eventualmente a casa lo proverò

Ultima modifica effettuata da netarrow il 19/05/2007 alle 8:30
PM Quote