C - Argumentos de linha de comando
É possível passar alguns valores da linha de comando para seus programas C quando eles são executados. Esses valores são chamadoscommand line arguments e muitas vezes eles são importantes para seu programa, especialmente quando você deseja controlá-lo de fora, em vez de codificar permanentemente esses valores dentro do código.
Os argumentos da linha de comando são tratados usando argumentos de função main () onde argc refere-se ao número de argumentos passados, e argv[]é um array de ponteiros que aponta para cada argumento passado para o programa. A seguir está um exemplo simples que verifica se há algum argumento fornecido a partir da linha de comando e age de acordo -
#include <stdio.h>
int main( int argc, char *argv[] ) {
if( argc == 2 ) {
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 ) {
printf("Too many arguments supplied.\n");
}
else {
printf("One argument expected.\n");
}
}
Quando o código acima é compilado e executado com um único argumento, ele produz o seguinte resultado.
$./a.out testing
The argument supplied is testing
Quando o código acima é compilado e executado com dois argumentos, ele produz o seguinte resultado.
$./a.out testing1 testing2
Too many arguments supplied.
Quando o código acima é compilado e executado sem passar nenhum argumento, ele produz o seguinte resultado.
$./a.out
One argument expected
Deve-se notar que argv[0] contém o nome do próprio programa e argv[1]é um ponteiro para o primeiro argumento da linha de comando fornecido e * argv [n] é o último argumento. Se nenhum argumento for fornecido, argc será um, e se você passar um argumento, entãoargc é definido como 2.
Você passa todos os argumentos da linha de comando separados por um espaço, mas se o próprio argumento tiver um espaço, você pode passar esses argumentos colocando-os entre aspas duplas "" ou aspas simples ''. Vamos reescrever o exemplo acima mais uma vez, onde imprimiremos o nome do programa e também passaremos um argumento da linha de comando colocando aspas duplas -
#include <stdio.h>
int main( int argc, char *argv[] ) {
printf("Program name %s\n", argv[0]);
if( argc == 2 ) {
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 ) {
printf("Too many arguments supplied.\n");
}
else {
printf("One argument expected.\n");
}
}
Quando o código acima é compilado e executado com um único argumento separado por espaço, mas entre aspas duplas, ele produz o seguinte resultado.
$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2