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

POSIX C Discussion :

getopt probleme arguments


Sujet :

POSIX C

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 149
    Points : 57
    Points
    57
    Par défaut getopt probleme arguments
    Bonjour,
    Voila j'ai un problème d'utilisation de getopt !
    Enfaite voila ce que je cherche a faire:
    par exemple on peut écrir ca ! ./toto -o toto titi
    Apres le -o , on peut passsé le nombre d'argument que l'on veut ( si c'est possible ?)

    et ensuite ce que je cherche a faire c'est que lorsqu'on utilise -o alors on appelle une fonction foo(toto,titi);

    Est ce que j'ai raison d'utilisé getopt ...? bref merci d'avance ! ci dessous mon code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    if((argc > 2)&&(strncmp(argv[1],"-o",2)==0)){
                            char option;
                            while ((option = getopt(argc,argv,"-ov:")) != EOF) {
                                    printf("tototo: %c",option);
                                    switch(option){
                                     case 'o':
                                            printf("ooooo\n");
                                            break;
                                    case 'v':
                                            printf("%s\n",optarg);
                                            break;
                                    }
                            }
                            printf("Affiche o\n");
    }

  2. #2
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 149
    Points : 57
    Points
    57
    Par défaut
    J'ai pas été clair....???

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonsoir,
    Citation Envoyé par marty499 Voir le message
    J'ai pas été clair....???
    Pas trop.

    Si on relit le man getopt, il n'est indiqué nulle part qu'une option peut prendre deux arguments.
    Cela ne doit donc pas être possible.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 149
    Points : 57
    Points
    57
    Par défaut
    ok...lol
    Donc je reformule...ne pas tenir compte du code que j'ai fait voir ...ce que je souhaite faire c'est cela :

    par exemple on peut écrir ca ! ./toto -o toto titi
    Apres le -o , on peut passsé le nombre d'argument que l'on veut ( si c'est possible ?)

    et ensuite ce que je cherche a faire c'est que lorsqu'on utilise -o alors on appelle une fonction foo(toto,titi);


    Comment puis je faire ?

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Donc je reformule
    J'appelle ça un copier-coller.

    Citation Envoyé par marty499 Voir le message
    par exemple on peut écrire ça ! ./toto -o toto titi
    Après le -o , on peut passer le nombre d'argument que l'on veut ( si c'est possible ?)
    À ma connaissance, ce n'est pas possible avec getopt...

    mais on peut faire autrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int foo(const char *, const char *);
     
    int main(int argc, char *argv[])
    {
        int i;
        for(i = 1; i < (argc - 2); ++i) {
            if(0 == strncmp(argv[i], "-o", 2) {
                /* argv[i] est "-o" */
                foo(argv[i+1], argv[i+2]);
                break;
            }
        }
        return 0;
    }

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    Essaye de regarder du coté de getsubopt: man 3 getsubopt

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ta question concerne le shell, pas le C. C'est le shell qui décide de ce qui est passé en argument d'un flag.

    Si tes arguments "toto" et "titi" sont effectivement liés au flag "-o", alors dans la chaine passé à getopt() il faut faire suivre le "o" de deux points (":") pour indiquer que le flag -o prend un argument.

    Ensuite, pour que le shell passe à la fois "toto" et "titi" en argument du -o, il ne faut pas d'espace entre "toto" et "titi". Tu peux les séparer par une virgule, par deux point, ou même par un espace escapé, mais pas par un simple escape. Par exemple tu peux invoquer ton programme comme celà (note les guillemets) :
    Et là, tu verra effectivement la chaine "toto titi" en argument du -o. Ensuite, à toi de séparer les arguments avec strtok() par exemple.

Discussions similaires

  1. GTK Callback probleme argument et structure
    Par farfouillis92 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/02/2012, 10h08
  2. getopt passage argument '.*'
    Par psychonaute dans le forum C
    Réponses: 1
    Dernier message: 28/01/2010, 17h18
  3. Probleme arguments de sorties matrices
    Par fuyo2004 dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/06/2009, 13h15
  4. Orbacus probleme arguments.
    Par vega_55 dans le forum CORBA
    Réponses: 1
    Dernier message: 27/10/2008, 17h27
  5. getopt, plusieurs arguments a une option
    Par Tex-Twil dans le forum Linux
    Réponses: 3
    Dernier message: 03/02/2008, 20h01

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