Cómo Pasar Argumentos a la Función main en C++

Como todos sabemos, la función main() es la función más importante de un programa en C/C++, Java etc, debido a que es el punto de inicio de cualquier aplicación aún si no tiene el grueso del código (que por buenas prácticas y organización es lo más común).

11809002

En esta entrada ilustraremos cómo aprovechar la gran utilidad de pasar argumentos a la función main() cuando esta es llamada desde la terminal (consola).

La super-conocida función main() recibe y puede únicamente recibir dos parámetros un tipo int, el cual indica la cantidad de parámetros que le fue pasada a dicha función y el siguiente parámetro es un array de cadenas de caractares ( char *args[] ) que normalmente se nombra ‘args’ debido a ‘arguments‘ aunque eso es solo por convención, todas las variables pueden recibir cualquier nombre, esto lo ilustramos en el siguiente código, hay que tener en cuenta que C++ toma el nombre del programa con una entrada, es decir que ‘nargs’ valdrá siempre AL MENOS 1 (hay que tener eso muy en cuenta).

#include <iostream>
using namespace std;
int main(int nargs, char *args[])
{
//donde nargs indica la cantidad de argumentos que ha recibido main()
//y *args[] es el array de  caracteres que contienen los argumentos de entrada
 return 0;
}

Un ejemplo

A continuación realizamos un sencillo programa que reciba cómo parámetro un nombre y como salida envíe un mensaje que contenga ese nombre, inicialmente hacemos uso de un if() para verificar que se haya ingresado un parámetro además del nombre del programa, por lo que la variable nargs debe valer al menos 2 (el nombre del programa y el nombre que esperamos que ingresen), finalmente cuando se ha cumplido la condición, mostramos un texto mediante un cout<< y accedemos al elemento 1 del array args[] ( args[1] ) el cual contienen el parámetro ingresado.

#include <iostream>
#include <string>

using namespace std;

//declaramos los parámetros que recibe la función main()
int main(int nargs, char *args[])
{
cout<<endl;
//verificamos que haya otro argumento además del nombre del programa
if(nargs<2)
{
//si solo hay un argumento entonces no se ingresó nada y pedimos datos de nuevo

cout<<"\tLe faltan parametros, por favor intente de nuevo.."<<endl<<endl;
}
else
{
//si hay se cumple que hay mas de dos argumentos
//accedemos a segundo que suponemos es el nombre ingresado
cout<<"\tHola "<<args[1]<<" gracias por aprender con nosotros"<<endl<<endl;
//agregamos \t para centrar mas el texto
}
return 0;
}

Primero ejecutamos el código sin pasar ningún argumento, y vemos como la condición if() se cumple, ya que necesitábamos que ‘nargs‘ fuese al menos 2, entonces el mensaje mostrado es el siguiente, (el programa se llama argumentos y lo ejecuto en linux con ./arguemntos):

cap

Ahora lo ejecutamos de nuevo e ingresamos un nombre, por ejemplo el mio “Julio” y vemos lo que el programa retorna.

cap

¿Y cuando son varios argumentos?

En caso de que necesitemos pasar varios argumentos a la función main() solo basta con separarlos con espacios, por ejemplo, vamos a hacer un programa que reciba como parámetros 3 nombres “David” “Carlos” y “Andres” y finalmente que los imprima en pantalla y nos diga cuantos fueron los argumentos de entrada.


#include <iostream>
#include <string>

using namespace std;

//declaramos los parámetros que recibe la función main()
int main(int nargs, char *args[])
{
//accedemos a cada una de las posiciones del array args
//ya que cada una de ellas contiene un parámetro (nombre en este caso)
cout<<args[1]<<endl<<endl;
cout<<args[2]<<endl<<endl;
cout<<args[3]<<endl<<endl;

//podemos mostrar el valor de nargs, la cantidad de argumentos
cout<<"el valor de nargs es: "<<nargs<<endl<<endl;

return 0;
}

Entonces solo bastará con poner en la consola el nombre del programa [espacio] Juan [espacio] David [espacio] Julio [pulsar enter], y el resultado es el siguiente.

cap

Si vas a trabajar con argumentos que son números probablemente te interesen las entradas sobre manipulación de strings en este mismo blog.

Hasta aquí este artículo, saludos y espero que haya sido de vuestra ayuda, si tienes sugerencias sobre futuros temas o tutoriales nos puedes decir en los comentarios.

Autor: Julio Marulanda.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s