0Pricing
C Academy · Aula

argc e argv

Leia argumentos do programa.

argc e argv é uma aula grátis de C Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.

Os programas recebem argumentos

Quando você executa um programa em um terminal, pode passar palavras extras chamadas argumentos de linha de comando.

C os entrega à função main por meio de dois parâmetros: argc (quantidade de argumentos) e argv (vetor de argumentos).

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("This program received %d arguments\n", argc);
    return 0;
}

A assinatura de main

A forma completa de main é:

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

argc é a quantidade de argumentos. argv é um vetor de ponteiros para strings, um para cada argumento.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("argc = %d\n", argc);
    return 0;
}

argv[0] é o nome do programa

O elemento first, argv[0], é o nome (ou caminho) usado para invocar o programa.

É por isso que argc é pelo menos 1 mesmo quando o usuário não passa argumentos adicionais.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Program name: %s\n", argv[0]);
    return 0;
}

Imprimindo todos os argumentos

Você pode percorrer os índices de 0 a argc - 1 para visitar cada cadeia de argumento em argv.

#include <stdio.h>

int main(int argc, char *argv[]) {
    for (int i = 0; i < argc; i++) {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    return 0;
}

argv termina com NULL

Pelo padrão C, argv[argc] é garantidamente um ponteiro NULL.

Isso significa que você pode percorrer argv até encontrar NULL, em vez de usar argc, embora seja mais comum contar com argc.

#include <stdio.h>

int main(int argc, char *argv[]) {
    char **p = argv;
    while (*p != NULL) {
        printf("%s\n", *p);
        p++;
    }
    return 0;
}

Os argumentos são sempre cadeias de caracteres

Cada argumento chega como uma cadeia de caracteres, até mesmo os números. Se um usuário passa 42, você recebe o texto "42", não o inteiro.

Você precisa convertê-lo por conta própria com funções como atoi ou strtol.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc > 1) {
        int n = atoi(argv[1]);
        printf("Number plus one is %d\n", n + 1);
    } else {
        printf("Pass a number\n");
    }
    return 0;
}

Verificando a quantidade de argumentos

Verifique sempre argc antes de ler argv[i]. Acessar um índice além dos argumentos fornecidos resulta em comportamento indefinido.

Uma proteção típica verifica se foram fornecidos argumentos suficientes e, caso contrário, imprime uma mensagem de uso.

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("Usage: %s <name>\n", argv[0]);
        return 1;
    }
    printf("Hello, %s!\n", argv[1]);
    return 0;
}

Usando um código de saída diferente de zero

Quando os argumentos estão incorretos, retorne um valor diferente de zero de main para sinalizar a falha ao shell.

Por convenção, 0 significa sucesso e qualquer outro valor significa que ocorreu um erro.

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc != 3) {
        printf("Need exactly 2 arguments\n");
        return 1;
    }
    printf("Got both arguments\n");
    return 0;
}

Somando argumentos numéricos

Um exemplo prático: some todos os números passados na linha de comando, convertendo cada um com atoi e acumulando um total.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int sum = 0;
    for (int i = 1; i < argc; i++) {
        sum += atoi(argv[i]);
    }
    printf("Sum = %d\n", sum);
    return 0;
}

Notação alternativa para argv

Você pode encontrar char **argv em vez de char *argv[]. Como parâmetro de função, ambas as formas significam a mesma coisa: um ponteiro para o primeiro ponteiro de cadeia de caracteres.

As duas permitem usar índices com argv[i].

#include <stdio.h>

int main(int argc, char **argv) {
    if (argc > 1)
        printf("First arg: %s\n", argv[1]);
    return 0;
}

Reexibindo os argumentos

O comando clássico echo simplesmente imprime seus argumentos. Veja uma versão mínima que os une com espaços.

#include <stdio.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        printf("%s", argv[i]);
        if (i < argc - 1) printf(" ");
    }
    printf("\n");
    return 0;
}

Verificação rápida

Teste sua compreensão de argc e argv.

Recapitulação

Você aprendeu como os programas leem a entrada da linha de comando:

  • main(int argc, char *argv[]) recebe a quantidade e a matriz.
  • argv[0] é o nome do programa; os argumentos reais começam no índice 1.
  • argv[argc] é NULL.
  • Os argumentos são sempre cadeias de caracteres; converta números com atoi e valide argc primeiro.

Perguntas Frequentes

A aula “argc e argv” é grátis?

Sim — o texto completo de “argc e argv” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.

O que vou aprender em “argc e argv”?

Leia argumentos do programa. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C Academy?

Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “argc e argv”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C Academy?

Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. argc e argv
  2. Analisando opções
  3. getopt
  4. Criando uma ferramenta CLI
← Voltar para C Academy