C Arguments de ligne de commande

Lorsqu'un programme est exécuté, des valeurs peuvent être passées à un programme C depuis la ligne de commande. Ces valeurs sont appeléesarguments de ligne de commandeIls sont importants pour le programme, surtout lorsque vous souhaitez contrôler le programme depuis l'extérieur plutôt que de coder en dur ces valeurs dans le code.

En langage C, les arguments de ligne de commande sont une méthode d'obtention d'entrées depuis la ligne de commande, qui peut être utilisée pour transmettre des informations au programme lors de l'exécution du programme. Les arguments de ligne de commande sont transmis au programme via les paramètres de la fonction main. Le prototype de la fonction main peut être l'une des deux formes suivantes :

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

ou :

int main(int argc, char **argv);
  • argc (nombre d'arguments): indique le nombre d'arguments de ligne de commande, y compris le nom du programme lui-même. Par conséquent,argcAu moins 1.

  • argv (vecteur d'arguments): est un pointeur vers un tableau de chaînes de caractères, où chaque chaîne est un argument de ligne de commande. Le premier élément du tableau (c'est-à-dire,argv[0]) est généralement le nom du programme. Les éléments suivants sont les arguments de ligne de commande transmis au programme.

Voici un exemple simple qui vérifie si des arguments de ligne de commande sont fournis et effectue les actions correspondantes en fonction des arguments :

Exemple

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   if( argc == 2 )
   {
      printf("L'argument fourni est %s\n", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Trop d'arguments fournis."\n");
   }
   else
   {
      printf("Un argument attendu."\n");
   }
}

En utilisant un argument, compilez et exécutez le code ci-dessus, il produira le résultat suivant :

$./a.out testing
The argument supplied is testing

En utilisant deux arguments, compilez et exécutez le code ci-dessus, il produira le résultat suivant :

$./a.out testing1 testing2
Too many arguments supplied.

En ne passant aucun argument, compilez et exécutez le code ci-dessus, il produira le résultat suivant :

$./a.out
One argument expected

Il convient de noter que,argv[0]stocke le nom du programme,argv[1]est un pointeur vers le premier argument de la ligne de commande, et *argv[n] est le dernier argument. Si aucun argument n'est fourni, argc vaudra 1 ; sinon, si un argument est passé,argcsera défini à 2.

Les arguments de ligne de commande multiples sont séparés par des espaces, mais si l'argument lui-même contient des espaces, alors lors du passage des arguments, vous devez placer l'argument entre guillemets doubles "" ou guillemets simples ''. Réécrivons l'exemple ci-dessus, il y a un espace, alors vous pouvez, de ce point de vue, les mettre entre guillemets doubles ou guillemets simples "". Réécrivons l'exemple ci-dessus pour passer un argument de ligne de commande placé entre guillemets doubles au programme :

Exemple

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   printf("Nom du programme %s\n", argv[0]);
 
   if( argc == 2 )
   {
      printf("L'argument fourni est %s\n", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Trop d'arguments fournis."\n");
   }
   else
   {
      printf("Un argument attendu."\n");
   }
}

En utilisant un argument simple séparé par un espace, avec l'argument entre guillemets doubles, compilez et exécutez le code ci-dessus, il produira le résultat suivant :

$./a.out "testing1 testing2"

Progranm name ./a.out
The argument supplied is testing1 testing2

Cas d'utilisation

Les arguments de ligne de commande sont utiles dans de nombreuses situations, par exemple :

  • Chemin du fichier de configuration
  • Sélection du mode (par exemple, mode débogage)
  • Noms du fichier d'entrée et du fichier de sortie
  • Options d'exécution et indicateurs (tels que-vindique le mode verbeux)

Notes

  • Les arguments de ligne de commande sont généralement des chaînes ; si vous devez les convertir en types numériques, vous pouvez utiliser des fonctions de la bibliothèque standard telles queatoioustrtol。
  • Vous devez toujours valider et gérer les arguments de ligne de commande afin d'éviter les entrées incorrectes ou malveillantes.
autres extensions