Últimamente he visto que en varios códigos en vez de simplemente hacer:
int main(){
return 0;
}
hacen:
Citarint main(int argc, char *argv[]) {
Quisiera saber el motivo!! Muchas gracias
Se usan para retornar el numero de argumentos que se le pasaron en ejecucion a tu programa (argc) que se retornan en *argv[], si no mal recuerdo el primer elemento es la ruta del exe.
int main(int argc, char *argv[])
{
int i = 0;
for (i = 0;argc > i; i++)
fprintf(stdout, "%s\n", argv[i]);
return EXIT_SUCCESS;
}
Dulces Lunas!¡.
http://c.conclase.net/curso/?cap=020c
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap6/cap64.htm
Extendiendo la explicación que ya te han dado.
* argv[0] usualmente es el nombre de la aplicación pero hay la posibilidad de que sea NULL.
* argv[ i ] es el argumento "i" con este objeto en el rango 0 .. argc - 1
* argv[argc] siempre es NULL.
En base a ello puedes procesar los argumentos mediante un bucle utilizando un contador (lo usual) o un puntero. Por ejemplo (siguiendo el estándar C90):
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
char **p;
puts("Lista de argumentos (1):");
for (i = 0; i <= argc; i++)
printf(
"argv[%d] == \"%s\"\n",
i,
argv[i] != NULL ? argv[i] : "NULL"
);
puts("----");
puts("Lista de argumentos (2):");
for (p = argv; p <= argv + argc; p++)
printf(
"argv[%ld] == \"%s\"\n",
(long int) (p - argv),
*p != NULL ? *p : "NULL"
);
return EXIT_SUCCESS;
}
Un saludo