2

Entendiendo la estructura de int main(int argh, char * argh[])

Heros Leonel
Heros
13429

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.

Escribe tu comentario
+ 2
2
13429Puntos

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.