< Les pointeurs | TutoCFrench | Les fonction d'entrée/sortie >
Notions :
int main(int argc, char* argv[])
atoi()
Lors du lancement d'un programme par le shell, celui-ci peut lui passer des paramètres.
En C, ces arguments sont récupèrés dans un tableau de tableaux de caractères : char *argv[]
.
L'entier argc
indique le nombre d'arguments passés au programme dans le tableau argv
.
Compilons par exemple le programme ci-dessous (notez que le premier argument est toujours le nom du programme lui-même, comme en shell) :
int main(int argc, char *argv[]) { printf("nom du programme: %s\n", argv[0]); printf("1er argument: %s\n", argv[1]); printf("2e argument: %s\n", argv[2]); return 0; }
Ensuite exécutons ce programme :
user$ ./prog un deux nom du programme: ./prog 1er argument: un 2e argument: deux
Le schéma ci-dessous essaye de donner une idée imagée de la façon dont sont stockées les différentes valeurs en mémoire :
La variable argv
est un tableau qui contient 3
valeurs, tel qu'indiqué par argc
. Ces valeurs correspondent aux adresses où sont stockés les différents paramètres.
On utilise pour cela la fonction atoi()
:
char ch[] = "1234"; int n; n = atoi(ch); /* 'n' a maintenant pour valeur 1234 */
1. "params.c" : programme qui affiche tous les arguments passés en paramètre en indiquant leur position :
$ prog un pomme 1234 toto 1 un 2 pomme 3 1234 4 toto
2. "add.c" : programme qui additionne tous les nombres passés en argument et qui affiche le résultat
3. "encadre.c" : programme qui encadre une phrase passée en argument de la façon suivante :
$ encadre "Bonjour a tous" ++++++++++++++++++ + Bonjour a tous + ++++++++++++++++++
#include <stdio.h> int main(int argc, char *argv[]) { int i; for (i=1; i<argc; i++) printf("%d %s\n", i, argv[i]); return 0; }
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i, tot = 0; for (i=1; i<argc; i++) tot += atoi(argv[i]); printf("%d\n", tot); return 0; }
#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int i; if (argc != 2) { printf("usage : %s <string>\n", argv[0]); return 1; } for (i=0; i<strlen(argv[1])+4; i++) printf("+"); printf("\n"); printf("+ %s +\n", argv[1]); for (i=0; i<strlen(argv[1])+4; i++) printf("+"); printf("\n"); return 0; }
< Les pointeurs | TutoCFrench | Les fonction d'entrée/sortie >