Aveces nos preguntamos que son esos raros parámetros dentro de un programa de C
como en este caso
le llamaremos al programa count_arguments.c
#include<stdio.h>intmain(int argc, char *argv[]){
int count;
printf("El programa fue llamado por \"%s\".\n", argv[0]);
if(argc > 1)
{
for(count = 1; count < argc; count++)
{
printf("argv[%d] = %s\n", count, argv[count]);
}
printf("Cantidad de argumentos: %d\n", count);
}
else
{
printf("No hay mas argumentos.\n");
}
return0;
}
No es necesario que la función int main() de un programa en C tenga estos parámetros pero en algunos casos si necesitaremos pasar algunos argumentos a la hora de correr nuestro programa.
Ahora paso a paso
int main(intargc, char *argv[])
int argc que seria argument count contiene la cantidad de argumentos que le hemos pasado a la función incluyendo el llamado a la función ./count_arguments este contaría como el argumento 1
char * argv[] que seria argument vector es un array apuntando un espacio de memoria donde se encuentran los argumentos en tipo de dato string
nuestra variable count nos va a servir de guía para contar los argumentos
Continuamos con printf() imprimiendo el primer argumento en argv[0] siendo ./count_arguments
printf("El programa fue llamado por \"%s\".\n", argv[0]);
En el siguiente
if(argc > 1)
{
for(count = 1; count < argc; count++)
{
printf("argv[%d] = %s\n", count, argv[count]);
}
printf("Cantidad de argumentos: %d\n", count);
}
Si le hemos pasado mas de un argumento ingresamos a un ciclo for con count iniciando en 1 ya que hemos imprimido el primer argumento ahora imprimimos los restantes.
argv[count] de esta manera es como podemos acceder a los argumentos que le hemos pasado .
Al finalizar el ciclo for imprimimos la cantidad de argumentos, recordando que ./count_arguments cuenta como el primer argumento.
Si en dado caso no hay mas de un argumento nos saltamos al else e imprimimos nuestro mensaje
else
{
printf("No hay mas argumentos.\n");
}
Conclusion: De esta manera es como podemos acceder a los argumento que le pasamos a nuestro programa cuando lo invocamos, siempre vendrán en formato string ya dentro de nuestro programa los podemos cambiar a otro tipo de dato usando las diferentes funciones de C
Espero sea de ayuda, cualquier comentario es bienvenido.
Gracias, Platzi.
Cometi un error en el titulo, debería de ser
Entendiendo la estructura de int main(int argc, char * argv[])
No veo la opción de editarlo una vez posteado.