Digite o seguinte código e compile-o:
#include <stdio.h>
int main(int argc, char *argv[])
{
int x;
printf("%d\n",argc);
for (x=0; x<argc; x++)
printf("%s\n",argv[x]);
return 0;
}
Neste código, o programa principal aceita dois parâmetros, argv e argc. O parâmetro argv é uma matriz de ponteiros para string que contém os parâmetros digitados quando o programa foi chamado na linha de comando do UNIX. O inteiro argc contém a soma do número de parâmetros. Esta parte do código representa os parâmetros da linha de comando. Para testar, compile o código em um arquivo executável denominado aaa e digite aaa xxx yyy zzz. O código imprimirá os parâmetros de linha de comando xxx, yyy e zzz, um em cada linha.
A linha char *argv[] é uma matriz de ponteiros para string. Em outras palavras, cada elemento da matriz é um ponteiro e cada ponteiro aponta para uma string (tecnicamente, ao primeiro caractere da string). Assim, argv[0] aponta para uma string de caracteres que contém o primeiro parâmetro na linha de comando (o nome do programa), argv[1] aponta para o próximo parâmetro e assim sucessivamente. A variável argc indica quantos ponteiros na matriz são válidos. Você verá que o código precedente não faz nada além de imprimir cada string válida apontada por argv.
Por haver o argv, você pode permitir que o programa reaja aos parâmetros de linha de comando digitados pelo usuário de forma fácil. Por exemplo, você pode querer que seus programas detectem a palavra help como o primeiro parâmetro depois do nome do programa e esvaziem um arquivo de ajuda em stdout. Os nomes de arquivos também podem ser passados e usados em suas instruções fopen.