/* FILE: words1.cpp last change: 12-Mar-2001 * Il programma legge un file di testo una parola per volta e scrive un file * con una parola per riga preceduta da un numero progressivo. */ #include #include void usage(char *nome); // Prototipo di una funzione const MAXSIZE = 1024; // La dimensione del buffer main(int argc, char ** argv) { if (argc < 3) // Devo avere almeno 2 argomenti sulla linea di comando usage(argv[0]); ifstream my_inp(argv[1]); // Apro il file in lettura if (!my_inp) { cerr << "Errore: non posso aprire il file " << argv[1] << " in lettura." << endl; exit(-1); } ofstream my_out(argv[2]); // Apro il file in scrittura if (!my_out) { cerr << "Errore: non posso aprire il file " << argv[2] << " in Scrittura." << endl; exit(-1); } // Copio una parola per volta dal primo file nel secondo. Utilizzo un buffer // costituito da MAXSIZE caratteri. char buff[MAXSIZE]; long cntr = 0; int fine_loop = 0; while(!fine_loop) { // Scorro il file finche` non arrivo alla fine my_inp >> buff; // Cerco di leggere una nuova parola if (my_inp.eof()) // Se ho raggiunto la fine del file devo fermarmi fine_loop = 1; else { // Se non sono alla fine del file, scrivo la nuova riga cntr++; my_out << cntr << ": " << buff << endl; } } my_inp.close(); // Chiudo i file my_out.close(); cout << "Sono state lette e riscritte " << cntr << " parole." << endl; exit(0); } // Funzione che descrive la modalita` di funzionamento del programma. void usage(char *nome) { cerr << "Uso:\n\t"; cerr << nome << " file_in file_out" << endl; cerr << "Dove:" << endl; cerr << "\tfile_in: nome del file di testo sorgente" << endl; cerr << "\tfile_out: nome del file destinazione." << endl; exit(0); }