Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Obtener entrada de un archivo por linea de comandos

Estas en el tema de Obtener entrada de un archivo por linea de comandos en el foro de C/C++ en Foros del Web. Hola, quisiera que me pudieran ayudar con esta duda sobre el uso de argv. Tengo varios ejercicios que me pidieron en la facultad que requieren ...
  #1 (permalink)  
Antiguo 15/05/2013, 19:04
 
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Obtener entrada de un archivo por linea de comandos

Hola, quisiera que me pudieran ayudar con esta duda sobre el uso de argv. Tengo varios ejercicios que me pidieron en la facultad que requieren que busque determinado patrón en un archivo que se toma como entrada por la linea de comandos. Había escuchado que se puede realizar utilizando el símbolo '<' precedido por el nombre del programa y poniendo luego el nombre del archivo, algo así como

programa.exe < archivoEntrada.txt

pero no estoy seguro como. Y otra cosa, se supone que para ejecutar un programa que requiera argumentos del tipo argv, es necesario hacerlo desde el cmd (trabajando en windows) o se podría ejecutar corriéndolo desde el mismo compilador (uso el IDE netbeans)?
  #2 (permalink)  
Antiguo 15/05/2013, 20:25
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Obtener entrada de un archivo por linea de comandos

Como no se si es C o C++ voy a poner un ejemplo en C.


Cuando usas:
Código:
programa.exe < archivo.txt
Lo que haces es mandar archivo.txt por el stdin.

Voy a explicarlo de manera rapida:
Un programa tiene 3 archivos por default: stdin (Standar Input<->Entrada Estandar), stdout (Standar Output<->Salida Estandar) y stderr (Standar Error<->Error Estandar). Por defecto, funciones como getchar, scanf trabajan sobre stdin, lo mismo con printf trabaja sobre stdout.

Cuando haces mi_programa.exe < archivo.txt lo que haces es que el contenido de archivo.txt vaya a stdin.

Igual que cuando haces mi_programa.exe > archivo.txt lo que haces es redireccionar stdout a archivo.txt

Sobre args y argv, solamente son 2 parámetros que recibe main, el primero indicando el numero de parámetros y el segundo el arreglo de parámetros (en este caso un arreglo de cadenas).

Dependiendo de tu IDE lo puedes configurar para redirigir stdin y stdout a un archivo.


Aquí te dejo un ejemplo:
Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(int argv, char **args) {
  4.  
  5.   int i;
  6.   char line[100];
  7.  
  8.   printf("INICIO DE ARGUMENTOS DEL PROGRAMA\n");
  9.   for(i = 0; i < argv; i++)
  10.     printf("%s\n", args[i]);
  11.   printf("FIN DE ARGUMENTOS DEL PROGRAMA\n");
  12.   printf("\n");
  13.  
  14.  
  15.   printf("INICIO LECTURA DE STDIN\n");
  16.   while(fgets(line, 100, stdin) != NULL) {
  17.     printf("%s", line);
  18.   }
  19.   printf("FIN DE LECTURA DE STDIN\n");
  20.  
  21.   return 0;
  22.  
  23. }

Puedes correrlo como:
Código:
programa.exe arg1 arg2 arg3 < archivo.txt
Ver los resultados y ver el código.

Etiquetas: comandos, entrada, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.