Argumentos em linha de comando

Por: Eduardo Casavella
Em linguagem C podemos passar argumentos através da linha de comando para um programa quando ele inicia.

A função main recebe parâmetros passados via linha de comando como vemos a seguir:

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

Onde:

argc – é um valor inteiro que indica a quantidade de argumentos que foram passados ao chamar o programa.

argv – é um vetor de char que contém os argumentos, um para cada string passada na linha de comando.

argv[0] armazena o nome do programa que foi chamado no prompt, sendo assim, argc é pelo menos igual a 1, pois no mínimo existirá um argumento.

Os argumentos passados por linha de comando devem ser separados por um espaço ou tabulação.

Exemplo: Programa que conta e mostra os argumentos recebidos na linha de comando.


#include <stdio.h>
#include <conio.h>
int main( int argc, char *argv[ ] )
{
   int cont;
    for(cont=0; cont < argc; cont++)
        printf("%d Parametro: %s\n", cont,argv[cont]);
    getch();
    return 0;
}

Obs: Este programa deve ser salvo em um diretório (no meu caso salvei em C:\teste), compilado e para executar devemos usar o prompt de comando. O programa será chamado a executar diretamente pelo prompt. Para tanto chamamos o programa pelo nome e passamos os argumentos. Veja o exemplo da chamada de execução na primeira linha da figura.
Tela de execução – Recebendo parâmetros do prompt

recebendo parametros do prompt

Tela de execução recebendo parâmetros do prompt

Exemplo:


#include <stdio.h>
#include <conio.h>
int main( int argc, char *argv[ ] )
{
  int Resultado, valorA=0, valorB=0;
    printf("\nMultiplicando valores passados na linha de comando\n");
    //atoi converte de alfanumérico para inteiro
    valorA = atoi(argv[1]);
    valorB = atoi(argv[2]);
    Resultado = valorA * valorB;
    printf("\n%d  X %d = %d\n",valorA,valorB,Resultado);
    getch();
    return 0;
}

Tela de execução – Multiplicando valores passados pelo prompt

multiplicando valores passados pelo prompt

Tela de execução multiplicando valores passados pelo prompt

Explicação do código

Os argumentos passados via linha de comando são armazenados em strings, logo é necessário realizar uma conversão usando a função atoi () para transformar os valores a serem multiplicados em números inteiros.

atoi(argv[1]) converte o argumento da posição [1] do vetor argv[] em inteiro.

Depois de converter os argumentos em inteiros efetuamos a multiplicação normalmente.
Até a próxima!

Uma resposta a Argumentos em linha de comando

  • Douglas Zölfeld Sucha disse:

    Valeu!eu n&ø entendia o porque disso: int argc, char *argv[] e agora por sua causa eu entendi, pois são pouco tutoriais que explicam isso, obrigado.