argc et argv
Lisez les arguments du programme
argc et argv est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Les programmes reçoivent des arguments
Lorsque vous exécutez un programme depuis un terminal, vous pouvez lui transmettre des mots supplémentaires appelés arguments de ligne de commande.
C les transmet à main au moyen de deux paramètres : argc (nombre d’arguments) et argv (vecteur d’arguments).
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("This program received %d arguments\n", argc);
return 0;
}La signature de main
La forme complète de main est :
int main(int argc, char *argv[])
argc est le nombre d’arguments. argv est un tableau de pointeurs vers des chaînes, un par argument.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("argc = %d\n", argc);
return 0;
}argv[0] est le nom du programme
Le premier élément, argv[0], est le nom (ou le chemin) utilisé pour invoquer le programme.
C'est pourquoi argc vaut au moins 1, même lorsque l'utilisateur ne transmet aucun argument supplémentaire.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Program name: %s\n", argv[0]);
return 0;
}Afficher tous les arguments
Vous pouvez parcourir les indices de 0 à argc - 1 pour visiter chaque chaîne d'arguments dans 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 se termine par NULL
Selon la norme C, argv[argc] est garanti comme étant un pointeur NULL.
Vous pouvez donc parcourir argv jusqu'à rencontrer NULL au lieu d'utiliser argc, même si le comptage avec argc est plus courant.
#include <stdio.h>
int main(int argc, char *argv[]) {
char **p = argv;
while (*p != NULL) {
printf("%s\n", *p);
p++;
}
return 0;
}Les arguments sont toujours des chaînes
Chaque argument est reçu sous forme de chaîne, même lorsqu'il s'agit d'un nombre. Si l'utilisateur transmet 42, vous recevez le texte "42", et non l'entier.
Vous devez effectuer vous-même la conversion avec des fonctions comme 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;
}Vérifier le nombre d'arguments
Vérifiez toujours argc avant de lire argv[i]. Accéder à un indice situé au-delà des arguments fournis entraîne un comportement indéfini.
Une protection classique vérifie qu'un nombre suffisant d'arguments a été fourni et affiche sinon un message d'utilisation.
#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;
}Utiliser un code de sortie non nul
Lorsque les arguments sont incorrects, renvoyez une valeur non nulle depuis main pour signaler l'échec à l'interpréteur de commandes.
Par convention, 0 signifie que l'opération a réussi et toute autre valeur signifie qu'une erreur s'est produite.
#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;
}Additionner des arguments numériques
Exemple pratique : additionnez tous les nombres transmis sur la ligne de commande en convertissant chacun avec atoi et en cumulant le 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;
}Autre notation pour argv
Vous pouvez rencontrer char **argv à la place de char *argv[]. En tant que paramètre de fonction, ces deux notations désignent la même chose : un pointeur vers le premier pointeur de chaîne.
Les deux permettent d'accéder aux éléments avec argv[i].
#include <stdio.h>
int main(int argc, char **argv) {
if (argc > 1)
printf("First arg: %s\n", argv[1]);
return 0;
}Renvoyer les arguments
La commande classique echo affiche simplement ses arguments. Voici une version minimale qui les sépare par des espaces.
#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;
}Vérification rapide
Testez votre compréhension de argc et argv.
Récapitulatif
Vous avez appris comment les programmes lisent les entrées de la ligne de commande :
main(int argc, char *argv[])reçoit le nombre d'arguments et le tableau.- argv[0] contient le nom du programme ; les véritables arguments commencent à l'indice 1.
argv[argc]vaut NULL.- Les arguments sont toujours des chaînes ; convertissez les nombres avec
atoiet vérifiez d'abordargc.
Questions Fréquemment Posées
La leçon « argc et argv » est-elle gratuite ?
Oui — le texte complet de « argc et argv » 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 « argc et argv » ?
Lisez les arguments du programme 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 1 sur 4.
Combien de temps prend la leçon « argc et argv » ?
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.