PDA

Ver la versión completa : Leer en linea de comandos en C++



Deskicio
02-04-2008, 09:46
Saludos a tod@s, volvemos ala carga con la programación, pero esta vez en C++.
Preciso realizar una practica en la que se realiza un analizador lexicográfico (por eso no hay problema) los requerimientos son que el programa se ejecute en un consola de la siguiente forma:
programa.exe fichero_entrada.txt fichero_salida.txt

No se como pasarle el fichero de entrada por la linea de comando, ni como hacer que lo guarde en el indicado en la linea de comando, he buscado en internet y no he hayado la forma, uso Dev C++ para la compilacion (por si ayuda de algo), espero puedan ayudarme.

Muchas Gracias

smaug_
02-04-2008, 10:13
A ver, si no recuerdo mal (no he tocado nunca c++), la cabecera del metodo main puede ser de la siguiente forma


int main(int argc, char* argv[]);

donde argc es la cantidad de argumetnos que se pasa y argv[] es un array de cadenas con los nombres de fichero.


int main(int argc, char* argv[]){
for(int i=0;i<argc;i++)
printf("%s\n",argv[i]);
}
return 0;

Este miniprograma, muestra por pantalla todos los parametros que le pases cuando convocas la ejecucion.
Ya te digo, no he tocado c++, por lo que puede que la sintaxis no sea exacta, pero la filosofia es algo asi.
Un saludo y suerte.

PD: No tiene nada que ver, pero, es mi post 1024 !!! (preferia celebrar este al mil...)

Deskicio
02-04-2008, 12:45
Genial, lo probare y ya comentare la jugada

LooKoo
05-05-2008, 10:41
Para meter los ficheros de entrada si me acuerdo bien es algo asi como: programa.exe < fichero.txt para guadar el resultado en otro fichero no lo se :( .

Salu2

j8k6f4v9j
05-05-2008, 12:19
Para pasarle el nombre del archivo de entrada, en lugar de pasarle el archivo mediante redirección:


int main ( int argc, char **argv ) {
int fail_count = 0 ;
// para cada archivo de la lista de entrada
for ( int i = 1 ; i < argc ; ++i ) {
ifstream in ( argv[i] ) {

// si existe escribe su contenido, si no genera un error
if ( in ) {
string s ;
while ( getline( in, s ) )
cout << s << endl ;
} else {
cerr << " no se puede abrir el archivo " << argv[i] << endl ;
++fail_count ;
}
return fail_count ;
}

j8k6f4v9j
05-05-2008, 12:21
Y un ejemplo simple para guardar el archivo "entrada" en el archivo "salida":



int main() {
ifstream infile( "entrada" ) ;
ofstream outfile( "salida" ) ;

string s ;

while ( getline ( infile, s ) )
outfile << s << endl ;
return 0 ;
}


NOTA: Hay que tener en cuenta que hay que añadir los includes y los using :p

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

hystd
18-08-2008, 18:48
Solucionado pues! Cierro el tema.