Activité 3: Paramètres en Ligne de Commande

Page 1 sur 3Lecteur de document UniversityLib

Activité 3: Paramètres en Ligne de Commande

Computer Science - C Programming · exam

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;

}