|
|||||||
|
|
|
![]() |
|
|
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: 03:49.



















