Construire un outil CLI
Exemple pratique
Construire un outil CLI est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.
Assembler les éléments
Nous allons maintenant combiner les arguments, les options et l'analyse dans un petit outil CLI complet.
Notre exemple est un utilitaire de formatage de nombres qui lit une valeur et quelques options, puis affiche un résultat.
#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;
}Concevoir l'interface
Les bons outils CLI définissent leur interface à l'avance. Le nôtre acceptera :
-vpour une sortie verbeuse-r Npour répéter la sortie N fois- un argument positionnel : le texte à afficher
#include <stdio.h>
int main(void) {
printf("Interface: prog [-v] [-r N] <text>\n");
return 0;
}Déclarer les réglages
Stockez chaque comportement configurable dans une variable dotée d'une valeur par défaut pertinente. L'analyse reste ainsi séparée du travail proprement dit.
#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;
}Analyser avec getopt
Utilisez getopt pour renseigner les indicateurs. -r prend une valeur ; son entrée dans la chaîne d'options est donc 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;
}Lire l'argument positionnel
Après getopt, optind pointe vers le premier argument qui n'est pas une option. Nous récupérons le texte à partir de cet emplacement.
S'il n'y en a aucun, nous affichons le message d'utilisation et quittons avec un code d'erreur.
#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;
}Valider l'entrée numérique
Un outil robuste vérifie que -r a reçu un nombre cohérent. Refusez les nombres de répétitions nuls ou négatifs.
#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;
}Effectuer le travail
Une fois les réglages analysés et validés, effectuez la tâche proprement dite. Ici, nous affichons le texte repeat fois.
#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;
}Sortie verbeuse
L'indicateur de mode verbeux peut ajouter des informations de diagnostic. Conditionnez ces affichages à cet indicateur afin que la sortie normale reste claire.
#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;
}L'outil complet
Voici le programme complet qui réunit tous les éléments : analyser, valider, puis exécuter.
#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;
}Les codes de sortie sont importants
Les outils CLI communiquent leur réussite au moyen de leur code de sortie. Renvoyez 0 en cas de réussite et une valeur non nulle en cas d'erreur.
Les scripts et les autres programmes s'appuient sur ce code pour décider de la suite à donner.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("failure\n");
return 2;
}
printf("success\n");
return 0;
}Écrire les erreurs sur stderr
Par convention, la sortie normale est envoyée vers stdout et les erreurs vers stderr au moyen de fprintf(stderr, ...).
Les utilisateurs peuvent ainsi séparer les résultats des diagnostics lors de la redirection de la sortie.
#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;
}Vérification rapide
Testez votre compréhension des conventions applicables aux outils CLI.
Récapitulatif
Vous avez créé un outil CLI complet :
- Définir l'interface et déclarer les réglages avec leurs valeurs par défaut.
- Analyser les indicateurs avec
getopt; lire les arguments positionnels à partir deoptind. - Valider les entrées avant d'effectuer le travail.
- Renvoyer des codes de sortie pertinents et envoyer les erreurs vers
stderr.
Apprends C avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 39
- Leçons
- 144
Questions Fréquemment Posées
La leçon « Construire un outil CLI » est-elle gratuite ?
Oui — le texte complet de « Construire un outil CLI » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Construire un outil CLI » ?
Exemple pratique Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C Academy ?
Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Construire un outil CLI » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C Academy ?
Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- argc et argv
- Analyser les options
- getopt
- Construire un outil CLI