|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 572
|
[C++] Domanda su DevC++, come leggere da file input?
Ciao ragazzi, ho un problema: ho creato un programmetto sotto Linux, che legge da un file di testo un numero (es: 234. il punto segnala la fine) e me lo trasforma in binario.
...ora vorrei fare la stessa cosa sotto Windows e utilizzando DevC++, sapete come fare? Quando eseguo il programma mi esce solo il file di output, che dovrebbe contenere -appunto- la trasformazione, ma NON RIESCO A FARGLI PRENDERE L'INPUT! ![]() Per precisione, questo è il programma: #include<iostream> #include<fstream> using namespace std; int main() try //apertura file { ifstream IN ("input"); ofstream OUT ("output"); if(!IN || ! OUT) throw (0); char x,b; int r,n,a; n=0; IN>>x; // legge dal file while (x != '.') { n= (x-48)+n*10; IN>>x; } IN.close(); while (n>0){ r=n%2; b=r+48; OUT<< b; n=n/2; } OUT.close(); } catch (int x) {cout<<"problemi con i file"<<x<<endl;} |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prima di tutto non è corretta la verifica dell'errore che fai. IN e OUT non possono essere NULL:
http://www.cplusplus.com/reference/i.../ifstream.html La verifica dell'errore di apertura si fa con il membro fail. A prima vista non vedo errori particolari...sicuro che ci sia il file "input" ? |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 572
|
Quote:
char x,b; int r,n,a; n=0; IN>>x; // legge dal file while (x != '.') { n= (x-48)+n*10; IN>>x; } IN.close(); while (n>0){ r=n%2; b=r+48; OUT<< b; n=n/2; } tutto il resto è del prof quindi non saprei dirti, è la prima volta che tocco il C++ ![]() Cmq il file input c'è, è nella stessa directory di questo programmetto. Sotto linux mi bastava creare un input.txt che aprivo col KATE, ci scrivevo ad esempio "328.", mi veniva fuori il file output che -sempre con KATE- conteneva la giusta sequenza di 1 e 0. Ma sotto windows? Boh... mi hanno detto di eseguirlo dalla shell (start esegui cmd) però nel file di output non c'è scritto nulla.. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Attento che su Windows il notepad ti mette automaticamente l'estensione txt ai file, non vorrei che il tuo avesse l'estensione
![]() In tal caso non te lo aprirebbe. Digli al professore che ha sbagliato ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 572
|
Universitario!
![]() E questo è un esercizio che ci ha dato da fare per casa e da consegnare lunedì ![]() ![]() Però alla fine funziona... Comunque ora dò una controllata al file, ti faccio sapere. edit: è vero, il file ha l'estensione txt (lo vedo dalla shell) ma come si toglie :look: edit 2: VITTORIAAAAAAAA CE L'HO FATTA ![]() ho preso il file di output che ho rinominato in input e ora va !!! Ultima modifica di ciuaz!!! : 19-01-2008 alle 13:23. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il modo corretto per il controllo dell'errore, mantenedo la struttura che ha usato lui con l'eccezione (che a me sinceramente non piace per niente):
ifstream IN ("input"); ofstream OUT ("output"); if(IN.fail() || OUT.fail()) throw (0); Poi mai avrei dato un nome maiuscolo a quelle variabili...insomma...in bocca al lupo ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:52.