PDA

View Full Version : [C++] Problema scrittura di un file


Cory
31-01-2010, 11:20
Ciao a tutti, ho realizzato un piccolo e semplice programma in C++ che prende in ingresso un file .txt e restituisce in un file di output il numero di vocali presenti nel txt di ingresso.

il problema che ho è che quando apro il file di output per vedere se ha funzionato, il contenuto è illeggibile! Mentre se provo a modificare il programma facendogli scrivere sul file di output le vocali che mano a mano vengono incontrate questo funziona!

Vi copio il codice, spero possiate aiutarmi perchè non ho capito se è un problema a livello di programmazione o di codifica (a proposito, programmo su Ubuntu usando gedit) .

using namespace std;
#include<iostream>
#include<fstream>

bool isVowel(char);

int main(int argc, char* argv[]){


fstream my_in, my_out;
int count=0;
char c;

my_in.open(argv[1],ios::in);
my_out.open(argv[2],ios::out);


while(my_in.get(c)){

if(isVowel(c)){ count++;}

}

my_out.put(count);

my_in.close();
my_out.close();

}

bool isVowel(char ch){

if((ch=='a')||(ch=='e')||(ch=='i')||(ch=='o')||(ch=='u')) return true;
else return false;
}

DanieleC88
31-01-2010, 11:44
Be' su di un file di testo solitamente ci dovresti scrivere una sequenza di byte che poi possano essere letti come un testo codificato in ASCII (o Unicode). Ciò che stai scrivendo invece è un numero intero: la funzione put() lo tratterà come un carattere ASCII e lo scriverà così sul file: è per questo che non lo riesci a leggere bene quando lo apri. :)

Per risolvere il problema dovrebbe bastarti lasciar fare il lavoro sporco di conversione da numero a sequenza ASCII alla classe fstream:
my_cout << count;
invece di usare put().

ciao ;)

Cory
31-01-2010, 14:28
funziona :) era proprio quello allora!

Grazie mille!