Activité 3 Paramètres en Ligne de commande
Lorsqu'on donne le nom de l'exécutable sur la ligne de commande, il est possible de passer
des paramètres au programme, le nombre de paramètres sur la ligne (nom de la commande
inclus) est stocké dans l'argument argc de la fonction main, et la liste des paramètres est
stockée dans le tableau de chaînes de caractères argv[] de la fonction main.
#include <stdio.h>
// main(int argc, char *argv[])
//
// ARGUMENTS :
//
// argc = nombre d'arguments sur la ligne (nom de l'executable compris)
// argv = tableau de chaines de car. qui contient dans la case 0 le
// nom de la commande et dans les autres les arguments de la commande
//
// RETOURNE : 0 en cas d'execution normale
int main(int argc, char *argv[])
{
int nb;
printf("les %d parametres de la commande %s sont :\n", argc-1, argv[0]);
nb = 1;
while(nb < argc){
printf("\t%s\n",argv[nb]);
Advertisement
nb++;
}
return 0;
}
> ./test 1 15.3 bonjour A -39
les 5 parametres de la commande ./test sont :
1
15.3
bonjour
A
-39
>
Convertir les données lues en chiffres
Ceci permet de donner des valeurs sans passer par un printf et un scanf. Il faut penser à
vérifier que le nombre de paramètres entrés sur la ligne de commande correspond au nombre
attendu.
Les paramètres sont sous forme de chaînes de caractères, pour transformer un paramètre en
chiffre, il faut utiliser les fonctions atoi, atol ou atof (entier, grand entier, réel). Pour les
utiliser, il faut inclure stdlib.h.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
Advertisement
{
int somme, n_premiers_entiers, indice ;
if(argc != 2){
printf("usage : somme N\n");
exit(1);
}
n_premiers_entiers = atoi(argv[1]);
if(n_premiers_entiers == 0){
printf("vous n'avez pas entre un chiffre ou vous avez entre 0\n");
exit(1);
}
printf("la somme des %d premiers entiers est ", n_premiers_entiers);
indice = 0;
somme = 0;
while(indice <= n_premiers_entiers){
somme += indice;
indice++;
}
printf("%d\n", somme);
return 0;
}
> gcc ligne.c -o test
Advertisement
> ./test 5
la somme des 5 premiers entiers est 15
> ./test a
vous n'avez pas entre un chiffre ou vous avez entre 0
> ./test 3 4
usage : somme N
> ./test
usage : somme N
> ./test 0
vous n'avez pas entre un chiffre ou vous avez entre 0
> ./test 3
la somme des 3 premiers entiers est 6
>
Écrivez un programme qui compte le nombre de lettres du mot qui est passé en paramètres sur
la ligne de commandes
> gcc -Wall compte_lettres.c -o compte_lettre_mots
> ./compte_lettre_mots abracadabra le mot abracadabra contient 11 lettres
> ./compte_lettre_mots abricot le mot abricot contient 7 lettres
> ./compte_lettre_mots zoo le mot zoo contient 3 lettres
> ./compte_lettre_mots ce le mot ce contient 2 lettres
> ./compte_lettre_mots a le mot a contient 1 lettres
>
Advertisement
indication : la deuxième case de argv contient une chaîne (argv est un tableau à deux
dimensions).
Solution :
Compter le nombre de lettres d'un mot sur la ligne de commande
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int indice;
if(argc != 2){
printf("erreur");
exit(1);
}
indice = 0;
while(argv[1][indice] != '\0'){
indice++;
}
printf("le mot %s contient %d lettres\n", argv[1], indice);
return 0;
}