Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-01-2008, 17:11   #1
ciuaz!!!
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;}
ciuaz!!! è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2008, 23:28   #2
cionci
Senior Member
 
L'Avatar di cionci
 
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" ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 12:00   #3
ciuaz!!!
Senior Member
 
Iscritto dal: Sep 2003
Messaggi: 572
Quote:
Originariamente inviato da cionci Guarda i messaggi
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" ?
Io ho fatto solo questa parte del programma

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..
ciuaz!!! è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 12:02   #4
cionci
Senior Member
 
L'Avatar di cionci
 
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 Professore universitario o delle superiori ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:07   #5
ciuaz!!!
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.
ciuaz!!! è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:46   #6
cionci
Senior Member
 
L'Avatar di cionci
 
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
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v