Capítulo 16: Argumentos de Linha de Comando ⌨️🕶️

Neste capítulo, vamos aprender a passar informações para o nosso programa diretamente no momento em que o executamos pelo terminal, usando argc e argv, com o tema Matrix!


📖 O que são argc e argv?

Até agora, a nossa função main estava vazia: int main(). Mas ela pode receber dois parâmetros:

  • int argc: Conta quantos argumentos foram passados (Argument Count).
  • char *argv[]: Um vetor de strings que guarda os argumentos reais (Argument Vector).

O primeiro argumento (argv[0]) é sempre o nome do próprio programa!


📖 Exemplo Guiado: Codinome de Acesso

Vamos criar um programa que exige que você passe seu codinome ao executá-lo.

  1. Crie o arquivo acesso_matrix.c na pasta src/:
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    // Se argc for menor que 2, significa que o usuário não passou o codinome
    if (argc < 2) {
        printf("Erro: Voce deve passar seu codinome!\n");
        printf("Uso: ./acesso_matrix SEU_NOME\n");
        return 1;
    }
 
    printf("Bem-vindo de volta a Matrix, %s.\n", argv[1]);
    
    printf("Total de argumentos passados: %d\n", argc);
 
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: gcc acesso_matrix.c -o acesso_matrix
  3. Execute passando o nome: ./acesso_matrix Neo

Resultado Esperado:

Bem-vindo de volta a Matrix, Neo.
Total de argumentos passados: 2

📊 Ilustração Visual: Como os argumentos são guardados

Se você digitar ./acesso_matrix Neo, o vetor argv fica assim:

graph LR
    subgraph Vetor argv
    A["argv[0]: './acesso_matrix'"]
    B["argv[1]: 'Neo'"]
    end

🛠️ Prática Obrigatória 1: Somador via Terminal

Crie um programa chamado somador_terminal.c que receba dois números como argumentos na linha de comando (ex: ./somador_terminal 5 10) e exiba a soma deles. (Dica: os argumentos vêm como texto! Use a função atoi(argv[1]) da biblioteca stdlib.h para converter texto em número inteiro).


🔑 Gabarito de Código

Prática 1: somador_terminal.c

#include <stdio.h>
#include <stdlib.h> // Necessária para atoi
 
int main(int argc, char *argv[]) {
    if (argc < 3) {
        printf("Erro: Passe dois numeros!\n");
        printf("Uso: %s num1 num2\n", argv[0]);
        return 1;
    }
 
    // Convertendo strings para inteiros
    int num1 = atoi(argv[1]);
    int num2 = atoi(argv[2]);
    int soma = num1 + num2;
 
    printf("A soma de %d e %d e: %d\n", num1, num2, soma);
 
    return 0;
}

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo