Creare uno strumento CLI
Esempio pratico
Creare uno strumento CLI è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.
Unire tutti gli elementi
Ora combiniamo argomenti, opzioni e analisi in un piccolo ma completo strumento CLI.
Il nostro esempio è un'utilità per la formattazione dei numeri che legge un valore e alcune opzioni, quindi stampa un risultato.
#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;
}Progettazione dell'interfaccia
Un buon strumento CLI definisce in anticipo la propria interfaccia. Il nostro accetterà:
-voutput dettagliato-r Nripete l'output N volte- un argomento posizionale: il testo da stampare
#include <stdio.h>
int main(void) {
printf("Interface: prog [-v] [-r N] <text>\n");
return 0;
}Dichiarazione delle impostazioni
Memorizzi ogni comportamento configurabile in una variabile con un valore predefinito sensato. In questo modo l'analisi rimane separata dal lavoro effettivo.
#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;
}Analisi con getopt
Utilizzi getopt per valorizzare i flag. -r accetta un valore, quindi la relativa voce nella optstring è 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;
}Lettura dell'argomento posizionale
Dopo getopt, optind punta al primo argomento non opzionale. Preleviamo da lì il testo.
Se non è presente, stampiamo le istruzioni per l'uso e usciamo con un codice di errore.
#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;
}Convalida dell'input numerico
Uno strumento robusto verifica che -r abbia ricevuto un numero sensato. Rifiuti quantità di ripetizioni pari a zero o negative.
#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;
}Esecuzione del lavoro
Dopo aver analizzato e convalidato le impostazioni, esegua l'attività effettiva. Qui stampiamo il testo repeat volte.
#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;
}Output dettagliato
Il flag verbose può aggiungere informazioni diagnostiche. Racchiuda queste stampe in un controllo del flag, così l'output normale rimane pulito.
#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;
}Lo strumento completo
Ecco il programma completo che unisce tutti gli elementi: analizzare, convalidare, quindi eseguire.
#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;
}L'importanza dei codici di uscita
Gli strumenti CLI comunicano l'esito tramite il proprio codice di uscita. Restituisca 0 in caso di successo e un valore diverso da zero in caso di errore.
Gli script e gli altri programmi si basano su questo valore per decidere cosa fare successivamente.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("failure\n");
return 2;
}
printf("success\n");
return 0;
}Scrittura degli errori su stderr
Per convenzione, l'output normale viene inviato a stdout e gli errori a stderr tramite fprintf(stderr, ...).
In questo modo gli utenti possono separare i risultati dalle informazioni diagnostiche quando reindirizzano l'output.
#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 rapida
Verifichi la Sua comprensione delle convenzioni degli strumenti CLI.
Riepilogo
Ha creato uno strumento CLI completo:
- Definisca l'interfaccia e dichiari le impostazioni con valori predefiniti.
- Analizzi i flag con
getopt; legga gli argomenti posizionali daoptind. - Convalidi gli input prima di eseguire il lavoro.
- Restituisca codici di uscita significativi e invii gli errori a
stderr.
Domande Frequenti
La lezione «Creare uno strumento CLI» è gratuita?
Sì — il testo completo di «Creare uno strumento CLI» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.
Cosa imparerò in «Creare uno strumento CLI»?
Esempio pratico Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C Academy?
Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Creare uno strumento CLI»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C Academy?
Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- argc e argv
- Analizzare le opzioni
- getopt
- Creare uno strumento CLI