soulkeum
Messages postés26Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention 7 mars 2008
-
5 mars 2008 à 12:30
soulkeum
Messages postés26Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention 7 mars 2008
-
7 mars 2008 à 23:22
Bonjour,
je dois modifier un programme qui existe , pour qu'il recoit un paramateres en entrée.
ce parametre est donnée par un shell unix, par exemple DT10 ou DT11 ou HKFH , toujours une chaine de 4 caractere
or je en sais pas comment je dois modifier mon main pour qu'il lise ce caractere
pour moi les int argc , et char **argv je ne me suis jamais servit : int main (int argc, char **argv)
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 5 mars 2008 à 17:18
Une solution possible :
Il faut que la fonction principale soit du type main(int argc,char** argv) pour manipuler les paramètres passés.
int main
(
int argc // Nombre de paramètres sur la ligne de commande
// y compris le nom du programme lui-même
,char** argv // Tableau des paramètres : argv[0] = nom du programme
// argv[1] = 1er paramètre, argv[2] = deuxième paramètres, ...
)
{
if (argc == 1)
{
printf("Le programme %s a été lancé sans paramètre à traiter\n",argv[0]);
return 0;
}
if (argc > 2)
{
printf("Le programme %s a été lancé avec trop de paramètres !\n",argv[0]);
return 0;
}
printf("Le programme %s doit traiter le paramètre %s\n",argv[0],argv[1]);
...
Traitement du paramètre dans argv[1]
...
}
Si le programme s'appelle prg : la saisie de "prg DT10" affichera "Le programme prg doit traiter le paramètre DT10".
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 mars 2008 à 15:07
Hmm ok c'est un exemple.
Cependant, je ne conseille pas du tout de modifier directement ni argc ni argv. Après la boucle, si on veut réutiliser argc et argv, à moins de stocker leur valeur dans une variable, on ne saura pas combien d'arguments contient argv. De plus, argv sera décalé de on ne sais combien.