Programmer en langage C
162
© Éditions Eyrolles
11.2 Comment récupérer ces arguments dans la fonction main
Ces paramètres sont toujours des chaînes de caractères (lorsqu’ils sont fournis dans une commande de lancement du programme, ils sont séparés par des espaces). Leur transmission à la
fonction main (réalisée par le système) se fait selon les conventions suivantes :
●
le premier argument reçu par main sera de type int et il représentera le nombre total de
paramètres fournis dans la ligne de commande (le nom du programme compte lui-même
pour un paramètre),
●
le second argument reçu par main sera l’adresse d’un tableau de pointeurs, chaque pointeur désignant la chaîne correspondant à chacun des paramètres.
Ainsi, en remplaçant l’en-tête de la fonction main par celle-ci :
main (int nbarg, char * argv[])
nous obtiendrons :
●
dans nbarg, le nombre total de paramètres ;
●
à l’adresse argv[0], le premier paramètre, c’est-à-dire le nom du programme (dans notre
exemple précédent, il s’agirait donc de la chaîne test) ;
●
à l’adresse argv[1], le second paramètre (dans notre exemple, il s’agirait donc de la
chaîne arg1) ;
●
etc.
Voici un exemple de programme utilisant ces possibilités. Il est accompagné de trois exemples
d’exécution. Nous avons supposé que notre programme se nommait LIGCOM et nous avons
noté en gras ce que pourraient être les commandes correspondantes de lancement dans un
environnement en mode texte (suivant les implémentations, le nom de programme affiché en
résultat pourra différer quelque peu ; par exemple, il pourra être précédé d’une indication de
chemin ou de répertoire et suivi d’une extension) :
Exemple de programme récupérant les arguments de la ligne de commande
#include
#include
main(int nbarg, char * argv[])
{
int i ;
printf ("mon nom de programme est : %s\n", argv[0]) ;
if (nbarg>1) for (i=1 ; i printf ("argument numéro %d : %s\n", i, argv[i]) ;
else printf ("pas d’arguments\n") ;
}
Delannoy Livre.book Page 162 Mercredi, 6. mai 2009 4:26 16
Précédent

- 175/281

Suivant