Análise de Argumentos de Linha de Comando em C

CBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como analisar e lidar com argumentos de linha de comando em um programa C. Esta é uma habilidade fundamental no desenvolvimento de software, pois muitos programas aceitam e processam argumentos de linha de comando para personalizar seu comportamento.

👀 Visualização

$ gcc cmd.c -o cmd
$ ./cmd --arg1 1 --arg2 demo --arg9 labex
arg1:1
arg2:demo
arg9:labex

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar um arquivo C e escrever a estrutura básica de um programa C
  • Como analisar argumentos de linha de comando e extrair nomes e valores de parâmetros
  • Como imprimir os nomes e valores dos parâmetros no formato exigido

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Compreender o conceito de argumentos de linha de comando e como usá-los em um programa C
  • Implementar um programa que pode analisar e lidar com argumentos de linha de comando
  • Aplicar seu conhecimento de programação C para resolver um problema prático

Criar o Arquivo C

Nesta etapa, você criará o arquivo C para o programa de argumentos de linha de comando.

  1. Abra um terminal e navegue até o diretório do projeto:
cd ~/project
  1. Crie um novo arquivo C chamado cmd.c no diretório do projeto:
touch cmd.c
  1. Abra o arquivo cmd.c em um editor de texto e adicione o seguinte código:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    // Seu código irá aqui
    return 0;
}

Esta é a estrutura básica do programa C que lidará com os argumentos de linha de comando.

✨ Verificar Solução e Praticar

Implementar a Análise de Argumentos da Linha de Comando

Nesta etapa, você implementará a lógica para analisar os argumentos de linha de comando e imprimir os nomes e valores dos parâmetros.

  1. Na função main(), adicione um loop para iterar pelos argumentos de linha de comando:
for (int i = 1; i < argc; i++) {
    // Seu código irá aqui
}

O loop começa do índice 1 porque argv[0] contém o nome do programa.

  1. Dentro do loop, verifique se o argumento atual começa com --:
if (strncmp(argv[i], "--", 2) == 0) {
    // O argumento é um parâmetro
    char *param = argv[i] + 2; // Remove o "--" inicial
    char *value = NULL;

    // Verifique se há um valor após o parâmetro
    if (i + 1 < argc && strncmp(argv[i + 1], "--", 2) != 0) {
        value = argv[i + 1];
        i++; // Pula o argumento do valor
    }

    printf("%s:%s\n", param, value);
}

Este código extrai o nome e o valor do parâmetro dos argumentos de linha de comando e os imprime no formato exigido.

  1. O código final é o seguinte:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        if (strncmp(argv[i], "--", 2) == 0) {
            char *param = argv[i] + 2; // Remove o "--" inicial
            char *value = NULL;

            // Verifique se há um valor após o parâmetro
            if (i + 1 < argc && strncmp(argv[i + 1], "--", 2) != 0) {
                value = argv[i + 1];
                i++; // Pula o argumento do valor
            }

            printf("%s:%s\n", param, value);
        }
    }

    return 0;
}
  1. Salve o arquivo cmd.c.
✨ Verificar Solução e Praticar

Compilar e Executar o Programa

Nesta etapa, você compilará o programa C e o executará com alguns exemplos de argumentos de linha de comando.

  1. Compile o arquivo cmd.c:
gcc cmd.c -o cmd

Isso criará um arquivo executável chamado cmd.

  1. Execute o programa com alguns exemplos de argumentos de linha de comando:
./cmd --arg1 1 --arg2 demo --arg9 labex

Você deverá ver a seguinte saída:

arg1:1
arg2:demo
arg9:labex
  1. Tente executar o programa com alguns parâmetros duplicados:
./cmd --testarg1 1 --testarg2 demo --testarg1 labex

Você deverá ver a seguinte saída:

testarg1:1
testarg2:demo
testarg1:labex

Parabéns! Você implementou com sucesso o programa de análise de argumentos de linha de comando.

✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.