|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
[C++] Problema scrittura di un file
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) . Codice:
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; } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
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: Codice:
my_cout << count; ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
funziona
![]() Grazie mille! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:12.