CURSO DE C

 

Os Argumentos argc e argv

A função main() pode ter parâmetros formais. Mas o programador não pode escolher quais serão eles. A declaração mais completa que se pode ter para a função main() é:

                int main (int argc,char *argv[]);

Os parâmetros argc e argv dão ao programador acesso à linha de comando com a qual o programa foi chamado.

 O argc (argument count) é um inteiro e possui o número de argumentos com os quais a função main() foi chamada na linha de comando. Ele é, no mínimo 1, pois o nome do programa é contado como sendo o primeiro argumento.

 O argv (argument values) é um ponteiro para uma matriz de strings. Cada string desta matriz é um dos parâmetros da linha de comando. O argv[0] sempre aponta para o nome do programa (que, como já foi dito, é considerado o primeiro argumento). É para saber quantos elementos temos em argv que temos argc.

Exemplo: Escreva um programa que faça uso dos parâamentros argv e argc. O programa deverá receber da linha de comando o dia, mês e ano correntes, e imprimir a data em formato apropriado. Veja o exemplo, supondo que o executável se chame data:

data 19 04 99

O programa deverá imprimir:

19 de abril de 1999

#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
int mes;
char *nomemes [] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio",
                    "Junho", "Julho", "Agosto", "Setembro", "Outubro",
                    "Novembro", "Dezembro"};

if(argc == 4) /* Testa se o numero de parametros fornecidos esta' correto
                o primeiro parametro e' o nome do programa, o segundo o dia
                o terceiro o mes e o quarto os dois ultimos algarismos do ano */
{
    mes = atoi(argv[2]);  /* argv contem strings. A string referente ao mes deve ser
                             transformada em um numero inteiro. A funcao atoi esta
                             sendo usada para isto: recebe a string e transforma no
                             inteiro equivalente */

    if (mes<1 || mes>12)  /* Testa se o mes e' valido */
        printf("Erro!\nUso: data dia mes ano, todos inteiros");
    else
      printf("\n%s de %s de 19%s", argv[1], nomemes[mes-1], argv[3]);
}

else printf("Erro!\nUso: data dia mes ano, todos inteiros");

}

Página Anterior Índice da Aula Próxima Página


Curso de C do CPDEE/UFMG - 1996 - 1999