IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Gestion des options/ parametres en ligne de commande


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [Résolu]Gestion des options/ parametres en ligne de commande
    Bonjour,
    J'aimerai savoir comment gerer de maniere "propre" les options / parametres passées au programme par la ligne de commande (sous unix)

    Au debut je pensais a faire un tableau ou chaque case correspondrai a une option et a "cocher" les cases des options presentes, mais existe-t-il une technique un peu plus "standard" pour gerer tout ca?

    Merci!

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Ben quand tu écris le prototype de ta fonction main ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main(int argc, char **argv){
    /*  rien  */
    }
    tu récupères dans argc le nombre d'éléments de la ligne de commande (donc argc - 1 paramètres, puisque l'appel de l'éxécutable compte), et ces même arguments sont stockés dans argv... (suivant les implantations, argv[0] peut ou non contenir le nom de l'éxécutable)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut et bienvenue sur les forums de Developpez

    Je ne comprend pas la seconde partie de ton message.
    Pour gérer les paramètres de la LDC, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char **argv)
    Et ensuite, dans argv[1] tu as ton premier paramètre (sans compter le nom du programme).
    C'est ça que tu veux?

    Nas'

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    deja merci a vous deux
    c'etait pas vraiment ca m'a question : en fait je dois faire un programme qui prends des parametres par lea ligne de commande.
    Le probleme ce que il peut y avoir plein de parametres et d'options genre :

    ls -l
    ls -l -R
    ls -lR
    ls -lR [dossier]
    ...

    et la gestion des options se complique vite si leur nombre augmente (sachant que certaines options peuvent avoir elles aussi des parametres...)

    donc ma question est :
    ya -t-il une technique efficace et belle pour gerer tout ca (parser ma ligne de commande, et apres gerer l'execution du programme en fonction)

    j'avais penser a faire un type enumeré avec les divers options possibles, ou encore un tableau ou je cocherai les options qui ont été données afin de pouvoir savoir a n'importe quel moment quelles sont-elles..)

    Enfin voila je sais pas si je suis tres clair mais bon...j'espere que vous comprendrez ^^

    merci!

  5. #5
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par Daigakusei
    ou encore un tableau ou je cocherai les options qui ont été données afin de pouvoir savoir a n'importe quel moment quelles sont-elles..)
    Moi je ferais (et ai déjà fait ;-) ) comme ça. Ainsi, peut importe l'ordre des paramètres, au moment où tu commences à t'en préoccuper, ton tableau est rempli dans l'ordre qui t'arrange, etc...
    Bien entendu, il faut dimensionner le problème, sinon... ;-) (trop d'argument tue l'argument)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Une fonction POSIX.2 me semble tout a fait appropriee: getopt() [cf. man 3 getopt]
    Un exemple d'utilisation se trouve dans le man.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 30
    Dernier message: 09/11/2012, 16h32
  2. Réponses: 3
    Dernier message: 16/04/2011, 11h49
  3. Gestion des options de la ligne de commande
    Par gl dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h38
  4. Paramètre de ligne de commande
    Par babemagus dans le forum Linux
    Réponses: 2
    Dernier message: 13/07/2005, 11h48
  5. Réponses: 7
    Dernier message: 13/03/2005, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo