logo

Arguments de ligne de commande en C

La fonction la plus importante de C est la fonction main(). Il est principalement défini avec un type de retour int et sans paramètres.

int main() { ... }>

Nous pouvons également donner des arguments de ligne de commande en C. Les arguments de ligne de commande sont les valeurs données après le nom du programme dans le shell de ligne de commande des systèmes d'exploitation. Les arguments de ligne de commande sont gérés par la fonction main() d'un programme C.



Pour transmettre des arguments de ligne de commande, nous définissons généralement main() avec deux arguments : le premier argument est le nombre d'arguments de ligne de commande et le second est un liste des arguments de ligne de commande.

Java version Linux

Syntaxe

int main(int argc, char *argv[]) { /* ... */ } or int main(int argc, char **argv) { /* ... */ }>

Ici,

    argc (ARGument Count) est une variable entière qui stocke le nombre d'arguments de ligne de commande transmis par l'utilisateur, y compris le nom du programme. Donc si nous passons une valeur à un programme, la valeur de argc serait 2 (une pour l'argument et une pour le nom du programme)
  • La valeur de argc doit être non négative.
  • argv (ARGument Vector) est un tableau de pointeurs de caractères répertoriant tous les arguments.
  • Si argc est supérieur à zéro, les éléments du tableau de argv[0] à argv[argc-1] contiendront des pointeurs vers des chaînes.
  • argv[0] est le nom du programme, puis jusqu'à argv[argc-1], chaque élément est un argument de ligne de commande.

Pour une meilleure compréhension, exécutez ce code sur votre machine Linux.



Exemple

L'exemple ci-dessous illustre l'impression des arguments de ligne de commande.

C






// C program named mainreturn.c to demonstrate the working> // of command line arguement> #include> // defining main with arguments> int> main(>int> argc,>char>* argv[])> {> >printf>(>'You have entered %d arguments: '>, argc);> >for> (>int> i = 0; i printf('%s ', argv[i]); } return 0; }>

>

>

Sortir

You have entered 4 arguments: ./main geeks for geeks>

pour entrée de borne

$ g++ mainreturn.cpp -o main $ ./main geeks for geeks>

Note: D'autres formats dépendants de la plate-forme sont également autorisés par les standards C ; par exemple, Unix (mais pas POSIX.1) et Microsoft Visual C++ ont un troisième argument donnant l'environnement du programme, autrement accessible via getenv dans stdlib.h. Reportez-vous au programme C pour imprimer les variables d'environnement pour plus de détails.

Propriétés des arguments de ligne de commande en C

  1. Ils sont passés à la fonction main().
  2. Ce sont des paramètres/arguments fournis au programme lorsqu'il est invoqué.
  3. Ils sont utilisés pour contrôler les programmes de l’extérieur au lieu de coder en dur ces valeurs à l’intérieur du code.
  4. argv[argc] est un pointeur NULL.
  5. argv[0] contient le nom du programme.
  6. argv[1] pointe vers le premier argument de ligne de commande et argv[argc-1] pointe vers le dernier argument.

Note: Vous transmettez tous les arguments de ligne de commande séparés par un espace, mais si l'argument lui-même comporte un espace, vous pouvez alors transmettre ces arguments en les plaçant entre guillemets doubles ou simples.

Exemple

Le programme ci-dessous montre le fonctionnement des arguments de ligne de commande.

C




// C program to illustrate> // command line arguments> #include> int> main(>int> argc,>char>* argv[])> {> >printf>(>'Program name is: %s'>, argv[0]);> >if> (argc == 1)> >printf>(>' No Extra Command Line Argument Passed '> >'Other Than Program Name'>);> >if> (argc>= 2) {> >printf>(>' Number Of Arguments Passed: %d'>, argc);> >printf>(>' ----Following Are The Command Line '> >'Arguments Passed----'>);> >for> (>int> i = 0; i printf(' argv[%d]: %s', i, argv[i]); } return 0; }>

>

>

Sortie dans différents scénarios :

1. Sans argument : Lorsque le code ci-dessus est compilé et exécuté sans passer aucun argument, il produit la sortie suivante.

enregistrer la vidéo youtube vlc

Entrée de borne

$ ./a.out>

Sortir

Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name>

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

Entrée de borne

$ ./a.out First Second Third>

Sortir

Program Name Is: ./a.out Number Of Arguments Passed: 4 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First argv[2]: Second argv[3]: Third>

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

Entrée de borne

$ ./a.out 'First Second Third'>

Sortir

Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third>

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

Entrée de borne

$ ./a.out 'First Second Third'>

Sortir

Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third>