Como bien dice
iori2029 estas vbles son elementos del antiguo MS-DOS estrechamente relacionados con la línea de comandos. Como
iori2029 ya explicó el significado de las vbles yo me limitaré a realizar un ejemplo:
Supongamos que vamos a hacer una función muy simple, suma o resta de dos valores, nos interesa que el usuario pueda darnos los valores sin necesidad de usar funciones de entrada y salida. La solución sería bien fácil:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[], char *envp[])
{
if(argc<4)
{
printf("Este programa recibe tres parámetros:\n"
"La operación a realizar (suma/resta)\n"
"El primer operando y el segundo.");
return (-1);
}
if(strcmp("suma",argv[1])==0)
{
printf("%d",( atoi(argv[2]) )+( atoi(argv[3]) ) );
return(0);
}
else if(strcmp("resta",argv[1])==0)
{
printf("%d",( atoi(argv[2]) )-( atoi(argv[3]) ) );
return(0);
}
else
{
printf("\nLos parametros no son correctos");
return(-1);
}
}
para ejecutar el programa , basta ir abrir una ventana de MS-DOS movernos hasta el directorio donde está el programa y ejecutarlo de la sigte manera:
supongamos que el programa se llama prueba y está en c:\:
c:\prueba suma 6 8
14 ----> nos devolvería la suma de ambos
c:\prueba resta 9 3
6 -----> nos devolvería la resta de ambos
Si observas bien argv[] contiene 4 elementos, esto se debe a que argv[0] siempre contiene la ruta al programa, en este caso contendría:
argv[0]="C:\prueba.exe"
por tanto aun cuando no se le pasan argumentos mediante la línea de comandos argc siempre contendrá 1 y argv[0] siempre contendrá la ruta al programa.
Un saludo