Criando uma ferramenta CLI
Exemplo prático.
Criando uma ferramenta CLI é uma aula grátis de C Academy no CoddyKit. Esta é a aula 4 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.
Juntando tudo
Agora vamos combinar argumentos, opções e análise em uma pequena, mas completa, ferramenta de CLI.
Nosso exemplo é um utilitário de formatação numérica que lê um valor e algumas opções e, então, imprime um resultado.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <number>\n", argv[0]);
return 1;
}
printf("You passed: %s\n", argv[1]);
return 0;
}Projetando a interface
Boas ferramentas de CLI definem sua interface antecipadamente. A nossa aceitará:
-vsaída detalhada-r Nrepetir a saída N vezes- um argumento posicional: o texto a ser impresso
#include <stdio.h>
int main(void) {
printf("Interface: prog [-v] [-r N] <text>\n");
return 0;
}Declarando configurações
Mantenha cada comportamento configurável em uma variável com um valor padrão adequado. Isso mantém a análise separada do trabalho propriamente dito.
#include <stdio.h>
int main(void) {
int verbose = 0;
int repeat = 1;
const char *text = NULL;
printf("defaults: verbose=%d repeat=%d\n", verbose, repeat);
return 0;
}Analisando com getopt
Use getopt para preencher os sinalizadores. -r recebe um valor, portanto sua entrada na cadeia de opções é r:.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int verbose = 0, repeat = 1, opt;
while ((opt = getopt(argc, argv, "vr:")) != -1) {
if (opt == 'v') verbose = 1;
else if (opt == 'r') repeat = atoi(optarg);
}
printf("verbose=%d repeat=%d\n", verbose, repeat);
return 0;
}Lendo o argumento posicional
Depois de getopt, optind aponta para o primeiro argumento que não é uma opção. Obtemos o texto a partir dele.
Se nenhum estiver presente, imprimimos as instruções de uso e saímos com um código de erro.
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
while (getopt(argc, argv, "vr:") != -1) { }
if (optind >= argc) {
printf("Error: missing text argument\n");
return 1;
}
printf("text = %s\n", argv[optind]);
return 0;
}Validando a entrada numérica
Uma ferramenta robusta verifica se -r recebeu um número adequado. Rejeite quantidades de repetição zero ou negativas.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int repeat = 1, opt;
while ((opt = getopt(argc, argv, "r:")) != -1) {
if (opt == 'r') repeat = atoi(optarg);
}
if (repeat < 1) {
printf("Error: repeat must be >= 1\n");
return 1;
}
printf("repeat = %d\n", repeat);
return 0;
}Executando o trabalho
Com as configurações analisadas e validadas, execute a tarefa propriamente dita. Aqui, imprimimos o texto repeat vezes.
#include <stdio.h>
int main(void) {
const char *text = "hello";
int repeat = 3;
for (int i = 0; i < repeat; i++) {
printf("%s\n", text);
}
return 0;
}Saída detalhada
O sinalizador de modo detalhado pode adicionar informações de diagnóstico. Condicione essas impressões ao sinalizador para manter a saída normal limpa.
#include <stdio.h>
int main(void) {
int verbose = 1;
const char *text = "hi";
if (verbose) printf("[debug] about to print text\n");
printf("%s\n", text);
return 0;
}A ferramenta completa
Aqui está o programa completo, reunindo todas as partes: analisar, validar e então executar.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int verbose = 0, repeat = 1, opt;
while ((opt = getopt(argc, argv, "vr:")) != -1) {
if (opt == 'v') verbose = 1;
else if (opt == 'r') repeat = atoi(optarg);
}
if (optind >= argc) { printf("Usage: prog [-v] [-r N] <text>\n"); return 1; }
const char *text = argv[optind];
if (verbose) printf("[debug] repeat=%d\n", repeat);
for (int i = 0; i < repeat; i++) printf("%s\n", text);
return 0;
}Os códigos de saída são importantes
As ferramentas de CLI comunicam o sucesso por meio do código de saída. Retorne 0 em caso de sucesso e um valor diferente de zero em caso de erros.
Scripts e outros programas dependem disso para decidir o que fazer em seguida.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("failure\n");
return 2;
}
printf("success\n");
return 0;
}Escrevendo erros em stderr
Por convenção, a saída normal vai para stdout e os erros vão para stderr por meio de fprintf(stderr, ...).
Isso permite separar os resultados das informações de diagnóstico ao redirecionar a saída.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Error: need an argument\n");
return 1;
}
printf("%s\n", argv[1]);
return 0;
}Verificação rápida
Teste sua compreensão das convenções de ferramentas de CLI.
Recapitulação
Você criou uma ferramenta de CLI completa:
- Defina a interface e declare as configurações com valores padrão.
- Analise os sinalizadores com
getopt; leia os argumentos posicionais a partir deoptind. - Valide as entradas antes de executar o trabalho.
- Retorne códigos de saída significativos e envie os erros para
stderr.
Perguntas Frequentes
A aula “Criando uma ferramenta CLI” é grátis?
Sim — o texto completo de “Criando uma ferramenta CLI” é 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 “Criando uma ferramenta CLI”?
Exemplo prático. 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 4 de 4.
Quanto tempo leva a aula “Criando uma ferramenta CLI”?
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
- argc e argv
- Analisando opções
- getopt
- Criando uma ferramenta CLI