next up previous contents
Next: Rotinas para entrada e Up: Programação C Previous: Ponteiros para funções   Sumário


Argumentos na linha de comando

Até o momento, a definição da função main foi sempre utilizada em sua forma sem parâmetros. Há, no entanto, uma outra forma de definição de main que é utilizada para passar para o programa quais argumentos foram dados na linha de comando do sistema operacional. Nesta outra forma, main recebe dois parâmetros, como indicado abaixo:

    int main(int argc, char *argv[]) {
        ...
    }

O primeiro parâmetro, argc, indica o número de tokens presente na linha de comando. Por exemplo, uma chamada a um programa de nome eco com dois argumentos, como

   eco um dois
faria com que o valor de argc passado para a função main fosse igual a três.

O segundo parâmetro, argv, é um arranjo de strings, onde cada elemento do arranjo representa um dos tokens da linha de comando. Assim, no exemplo acima a função main receberia as seguintes strings nesta variável:

Observe que argv[0] sempre armazenará o nome do programa sendo executado, enquanto que argv[i] armazenará o $ i$-ésimo argumento passado para o programa, para $ i$ variando de 1 até argc-1.

Um exemplo simplificado de uma rotina que ecoe seus argumentos é apresentado abaixo, ilustrando o uso de argc e argv:

    /*
     *  eco.c: repete os argumentos da linha de comando
     */
    main(int argc, char *argv[]) {
        int i = 1;

        /* apresenta todos argumentos a partir de argv[1] */
        while (i < argc) {
            printf("%s ", argv[i]);
            ++i;
        }
        /* terminando, passa para proxima linha */
        printf("\n");
    }

Este exemplo também ilustra uma outra convenção usual em programas C: a definição do valor de retorno de main. Em geral, um valor de retorno diferente de 0 servirá para indicar ao sistema operacional (ou a um outro processo que tenha ativado este programa) que alguma condição de erro ocorreu que impediu o programa de completar com sucesso sua execução; o valor de retorno 0 indica um a terminação com sucesso.


next up previous contents
Next: Rotinas para entrada e Up: Programação C Previous: Ponteiros para funções   Sumário
Ivan L. M. Ricarte 2003-02-14