Un shell qui lance un prog C

[Résolu]
Signaler
Messages postés
26
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
7 mars 2008
-
Messages postés
26
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
7 mars 2008
-
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)

merci, d'avance
j'espere que j'était claire

4 réponses

Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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".

Jean-François
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut

"argc" donne le nombre d'argument et "argv" leurs noms.
Tu peux tester ce petit exemple qui montre l'utilisation des arguments du main:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
        while(argc--)
                printf("%s\n", *argv++);
        exit(1);
}

A noter que le premier parametre dans argv est le nom de l'exe.

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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.

C++ (@++)<!--
Messages postés
26
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
7 mars 2008

merci de vos réponse