C - Arguments de ligne de commande

Il est possible de transmettre certaines valeurs de la ligne de commande à vos programmes C lors de leur exécution. Ces valeurs sont appeléescommand line arguments et souvent, ils sont importants pour votre programme, en particulier lorsque vous souhaitez contrôler votre programme de l'extérieur au lieu de coder en dur ces valeurs à l'intérieur du code.

Les arguments de la ligne de commande sont traités à l'aide des arguments de la fonction main () où argc fait référence au nombre d'arguments passés, et argv[]est un tableau de pointeurs qui pointe vers chaque argument passé au programme. Voici un exemple simple qui vérifie s'il y a un argument fourni à partir de la ligne de commande et prend des mesures en conséquence -

#include <stdio.h>

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

   if( argc == 2 ) {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\n");
   }
   else {
      printf("One argument expected.\n");
   }
}

Lorsque le code ci-dessus est compilé et exécuté avec un seul argument, il produit le résultat suivant.

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

Lorsque le code ci-dessus est compilé et exécuté avec deux arguments, il produit le résultat suivant.

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

Lorsque le code ci-dessus est compilé et exécuté sans passer d'argument, il produit le résultat suivant.

$./a.out
One argument expected

Il faut noter que argv[0] contient le nom du programme lui-même et argv[1]est un pointeur vers le premier argument de ligne de commande fourni, et * argv [n] est le dernier argument. Si aucun argument n'est fourni, argc en sera un, et si vous passez un argument, alorsargc est fixé à 2.

Vous passez tous les arguments de la ligne de commande séparés par un espace, mais si l'argument lui-même a un espace, vous pouvez passer de tels arguments en les mettant entre guillemets doubles "" ou simples "". Réécrivons à nouveau l'exemple ci-dessus où nous afficherons le nom du programme et nous passerons également un argument de ligne de commande en mettant entre guillemets doubles -

#include <stdio.h>

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

   printf("Program name %s\n", argv[0]);
 
   if( argc == 2 ) {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\n");
   }
   else {
      printf("One argument expected.\n");
   }
}

Lorsque le code ci-dessus est compilé et exécuté avec un seul argument séparé par un espace mais entre des guillemets doubles, il produit le résultat suivant.

$./a.out "testing1 testing2"

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