Un shell qui lance un prog C

Résolu
soulkeum Messages postés 26 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 7 mars 2008 - 5 mars 2008 à 12:30
soulkeum Messages postés 26 Date d'inscription lundi 13 septembre 2004 Statut Membre Derniè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)

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

4 réponses

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

Jean-François
3
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
5 mars 2008 à 12:41
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
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.

C++ (@++)<!--
0
soulkeum Messages postés 26 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 7 mars 2008
7 mars 2008 à 23:22
merci de vos réponse
0
Rejoignez-nous