lunes, 23 de agosto de 2010

Argumentos desde la linea de comandos C/C++

En este post vamos a ver como reconocer los argumentos que recibe nuestro programa desde la linea de comandos cuando es ejecutado.

Cuando declaramos correctamente la función main, lo hacemos de la siguiente forma:

int main(int argc, char **argv)

Podemos observar que la función main recibe dos parámetros (argc, argv). Donde:

-argv: Es un array de cstrings, que contiene los parámetros pasados por la linea de comandos. En la primera posición del array, podemos encontrar la orden con la cual fue ejecutado nuestro programa.
A partir de la segunda posición están los argumentos que hemos recibido.

-argc: Es un número entero, que nos indica la cantidad de parámetros recibidos (el tamaño del array argv).

Observemos el siguiente código:


#include<iostream>

using namespace std;

int main(int argc, char **argv)
{
cout << "cantidad de argumentos: " << argc-1 << endl;
cout << "orden de ejecución: " << argv[0] << endl;
for(int i = 1; i < argc; i++)
{
cout << "Posición nro " << i
<< ": " << argv[i] << endl;
}
return 0;
}


El siguiente ejemplo esta probado en GNU/Linux.

Si ejecutáramos el código anterior desde una terminal, de la siguiente forma:

./argumentos argumento1 argumento2


Obtemdremos la siguiente salida:

cantidad de argumentos: 2
orden de ejecución: ./argumentos
Posición nro 1: argumento1
Posición nro 2: argumento2


Miremos entonces, que después de ejecutar el programa, podemos enviar la cantidad de parámetros que deseemos, siempre y cuando separemos cada uno de estos con un espacio.