Se pensarmos que qualquer programa escrito em Linguagem C é “despoletado” a partir de uma função principal, cuja designação é “main()“, fazer a passagem de parâmetros na linha de comandos é muito semelhante a realizar essa operação para outra qualquer função dentro do programa.
A grande diferença é que, no segundo caso, o valor desses parâmetros é especificado dentro do próprio código, e no primeiro, é feito na linha de comandos quando damos a ordem de execução do programa.
Para possibilitar a passagem de parâmetros a partir da linha de comandos existem dois parâmetros especiais:
argc -Dá indicação do número de argumentos que foram passados na linha de comando. Quando não são passados argumentos este valor é 1, uma vez que o próprio nome do programa faz parte desta contagem.
argv – É um array de strings que contém os caracteres que formam cada uma das strings passadas a partir da linha de comandos. Pelo mesmo motivo apresentado no ponto anterior, argv[0] armazena o próprio comando invocado.
A título de exemplo são mostrados os valores de arc e argv para um caso concreto:
$ ./exemplo batatas fritas 33
- argc =4
- argv[0] armazena a string “./exemplo”
- argv[1] armazena a string “batatas”
- argv[2] armazena a string “fritas”
- argv[3] armazena a string “33″
Segue-se um exemplo muito simples que se limita a contar e listar os argumentos passados da linha de comandos.
Código fonte
#include <stdio.h>
int main(int argc,char *argv[]){
int i;
printf("argc = %d\n",argc);
for(i=0;i<argc;i++)
printf("argv[%d] = %s\n", i, argv[i]);
return 0;
}
Output
$ ./argcargv graciano torrao argc = 3 argv[0] = ./argcargv argv[1] = graciano argv[2] = torrao
Note que o programa foi gravado com o nome argcargv.c e o executável obtido tem no nome argcargv.
Caso o ./ antes do nome do ficheiro “atrapalhe”, basta executarem o comando apresentado a seguir ou, em alternativa, editar os ficheiros de configuração da variáveis de sistema e tornar esta funcionalidade permanente.
$ PATH=$PATH:.