Programmation C-C++/Paramètres de la fonction main - ligne de commande
L'appel d'un programme se fait normalement avec la syntaxe suivante :
nom param1 param2 [...]
où nom est le nom du programme à appeler et param1, etc. sont les paramètres de la ligne de commande. De plus, le programme appelé peut renvoyer un code d'erreur au programme appelant (soit le système d'exploitation, soit un autre programme). Ce code d'erreur est en général 0 quand le programme s'est déroulé correctement. Toute autre valeur indique qu'une erreur s'est produite en cours d'exécution.
La valeur du code d'erreur est renvoyée par la fonction main. Le code d'erreur doit toujours être un entier. La fonction main peut donc (et même normalement doit) être de type entier :
int main(void) ...
Les paramètres de la ligne de commandes peuvent être récupérés par la fonction main. Si vous désirez les récupérer, la fonction main doit attendre deux paramètres :
- le premier est un entier, qui représente le nombre de paramètres ;
- le deuxième est un tableau de chaînes de caractères (donc en fait un tableau de pointeurs, ou encore un pointeur de pointeurs de caractères).
Les paramètres se récupèrent avec ce tableau. Le premier élément pointe toujours sur la chaîne donnant le nom du programme. Les autres éléments pointent sur les paramètres de la ligne de commande.
Exemple 4-17. Récupération de la ligne de commande
[modifier | modifier le wikicode]#include <stdio.h> /* Autorise l'utilisation des fonctions */
/* printf et scanf. */
int main(int n, char *params[]) /* Fonction principale. */
{
int i;
/* Affiche le nom du programme : */
printf("Nom du programme : %s.\n",params[0]);
/* Affiche la ligne de commande : */
for (i=1; i<n; ++i)
printf("Argument %d : %s.\n",i, params[i]);
return 0; /* Tout s'est bien passé : on renvoie 0 ! */
}