View Full Version : [C++] Domanda su DevC++, come leggere da file input?
ciuaz!!!
17-01-2008, 17:11
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! :muro:
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;}
Prima di tutto non è corretta la verifica dell'errore che fai. IN e OUT non possono essere NULL:
http://www.cplusplus.com/reference/iostream/ifstream/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" ?
ciuaz!!!
19-01-2008, 12:00
Prima di tutto non è corretta la verifica dell'errore che fai. IN e OUT non possono essere NULL:
http://www.cplusplus.com/reference/iostream/ifstream/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++ :stordita:
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..
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 ?
ciuaz!!!
19-01-2008, 13:07
Universitario!
:eek:
E questo è un esercizio che ci ha dato da fare per casa e da consegnare lunedì :eek: :eek:
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 :asd:
ho preso il file di output che ho rinominato in input e ora va !!!
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 ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.