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 :

sscanf + recuperation de deux chaines


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut sscanf + recuperation de deux chaines
    bonjour en fait j'effectue la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    char old[50];
    char newf[50];
     
    int c = sscanf (optarg, "%s%s", oldf, newf);
    /*optarg étant un char * de la librairie getopt.h */
    	if (c != 2)
    	  { 
                   printf("caractere ecrit : %d",c);
    	      fprintf (stderr, "Bad argument for -i option\n");
     
    	    exit (1);
    	  }
    il repére toujours ma premiére chaine mais la deuxieme il ne veut pas la reperer.
    le sscanf me retourne toujours 1 et pas 2, j'ai essayé avec %s-%s sans succés

    Merci

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bonjour69
    bonjour en fait j'effectue la commande suivante :
    Pas de commande en C. Des instructions, des fonctions...
    il repére toujours ma premiére chaine mais la deuxieme il ne veut pas la reperer.
    le sscanf me retourne toujours 1 et pas 2, j'ai essayé avec %s-%s sans succés
    Aucun problème avec ce 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
    17
    18
    19
    20
     
    #include <stdio.h>
     
    int main (void)
    {
       char const *optarg = "ab cd";
     
       char oldf[50];
       char newf[50];
     
       int n = sscanf (optarg, "%s%s", oldf, newf);
       if (n != 2)
       {
          printf ("Nb conversions reussies : %d", n);
          fprintf (stderr, "Bad argument for -i option\n");
     
       }
       printf ("'%s' '%s'\n", oldf, newf);
       return 0;
    }
    Je te conseille d'afficher 'optarg', parce que je pense qu'il y a quelque chose que tu n'as pas compris avec les arguments de la ligne de commande.

    Explique exactement ce que tu veux faire et on verra quels moyens mettre en oeuvre. Mon petit doigt me dit que de sortir getopt pour récuperer 2 arguments, c'est totalement inutile.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    Bonjour,

    en fait j'utilise la libraire getopt pour utiliser mon programme en ligne de commande.
    je veux donc extraire deux chaines qui correspondent en fait a deux noms de fichiers auquels j'effectue un traitement par la suite.
    genre si par exemple un utilisateur tape monprog -i fichier1 fichier2

    que je puisse recuperer mes deux chaines pour effectuer les traitements.
    Apparement avec votre exemple, mon programme plante.


    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    Re ,
    enfait je me suis trompé il ne plante pas, mais ne recupere pas le deuxieme chaine il lit tout le temps que la premiére.

    dans le nombre de conversion réussi j'en ai qu'une seule.

    d'ailleur quand j'affiche optarg, il me m'affiche que la première chaine :/
    Merci

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bonjour69
    Re ,
    enfait je me suis trompé il ne plante pas, mais ne recupere pas le deuxieme chaine il lit tout le temps que la premiére.

    dans le nombre de conversion réussi j'en ai qu'une seule.

    d'ailleur quand j'affiche optarg, il me m'affiche que la première chaine :/
    Merci
    Voila. C'est ça que je voulais que tu constates.

    En fait, chaque paramètre de la ligne de commande est séparé par un espace. Ensuite, chaque paramètre peut être analysé par getopt, mais il ne doit pas y avoir d'espace.

    Tu dois revoir ta syntaxe.
    Je ne sais pas à quoi sert -i, mais il me semble que

    monprog fichier1 fichier2

    devrait suffire.

    Et ça s'analyse très simplement avec les paramètres de main() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
     
    int main (int argc, char **argv)
    {
       if (argc > 2)
       {
          char *oldf = argv[1];
          char *newf = argv[2];
          printf ("'%s' '%s'\n", oldf, newf);
       }
     
       return 0;
    }
    On peut toujours faire plus compliqué, mais il faut que ce soit justifié et qu'il y ait une syntaxe cohérente.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    bonjour,

    Oui en effet merci, je pourrais faire comme cela mais en fait on m'oblige d'utilise la librairie getopt.
    je ne comprends pas trop l'histoire de optarg, apparement tous les arguments sont stockés dans une et une seule chaine coupés par des espaces ?
    j'ai beau afficher optarg( printf("%s",optarg)) , il s'arrete au premier espace et ne va plus loin. Comment puis-je donc recuperer ces deux arguments contenu dans la chaine ?
    ma syntaxe de sscanf n'est pas adapté ?


    Voici mon code complet pour être plus clair.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    #define VERSION "1.0"
     
     
    struct option longopts[] = {
      {"help", no_argument, NULL, 'h'},
      {"version", no_argument, NULL, 'v'},
      {"recursive", required_argument, NULL, 'r'},
      {"inverse", required_argument, NULL, 'i'},
      {"directe",required_argument, NULL, 'd'},
     {NULL, 0, NULL, 0}
    };
     
     
    static char *progname;
    int flagh = 0, flagv = 0, flagr = 0, flagi = 0,flagd =0,lose = 0;
    char oldf[50];
    char newf[50];
     
     
     
    char *ofile = NULL;
    int a,b;
     
     
    int main (int argc, char *argv[])
    {
      int optc;
     
     
      progname = argv[0];
     
      while ((optc =
    	  getopt_long (argc, argv, "hvr:i:", longopts,
    		       (int *) 0)) != -1)
        switch (optc)
          {
          case 'h':
    	flagh = 1;
    	break;
          case 'v':
    	flagv = 1;
    	break;
          case 'r':
    	flagr = 1;
     
     
    	break;
          case 'i':
    	flagi = 1;
     
     
       if (sscanf (optarg, "%s%s", oldf,newf ) !=2 )
       {
     
          fprintf (stderr, "Bad argument for -i option\n");
     
       }
       /* ne marche pas */ 
     
    	break; 
          case 'd':
    	flagv = 1;
    	break;             
         default:
     
    	lose = 1;
    	break;
          }
     
     
     
      if (lose || optind < argc)
        {
          if (optind < argc)
    	fprintf (stderr, "Too many arguments\n");
          fprintf (stderr, "Try `%s --help' for more information.\n", progname);
          exit (1);
        }
     
     
    // help 
      if (flagh)
        {
    etc.. pour tous les flags...
    Merci

  7. #7
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par bonjour69
    bonjour,

    Oui en effet merci, je pourrais faire comme cela mais en fait on m'oblige d'utilise la librairie getopt.
    je ne comprends pas trop l'histoire de optarg, apparement tous les arguments sont stockés dans une et une seule chaine coupés par des espaces ?
    j'ai beau afficher optarg( printf("%s",optarg)) , il s'arrete au premier espace et ne va plus loin. Comment puis-je donc recuperer ces deux arguments contenu dans la chaine ?
    ma syntaxe de sscanf n'est pas adapté ?


    Voici mon code complet pour être plus clair.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    #define VERSION "1.0"
     
     
    struct option longopts[] = {
      {"help", no_argument, NULL, 'h'},
      {"version", no_argument, NULL, 'v'},
      {"recursive", required_argument, NULL, 'r'},
      {"inverse", required_argument, NULL, 'i'},
      {"directe",required_argument, NULL, 'd'},
     {NULL, 0, NULL, 0}
    };
     
     
    static char *progname;
    int flagh = 0, flagv = 0, flagr = 0, flagi = 0,flagd =0,lose = 0;
    char oldf[50];
    char newf[50];
     
     
     
    char *ofile = NULL;
    int a,b;
     
     
    int main (int argc, char *argv[])
    {
      int optc;
     
     
      progname = argv[0];
     
      while ((optc =
    	  getopt_long (argc, argv, "hvr:i:", longopts,
    		       (int *) 0)) != -1)
        switch (optc)
          {
          case 'h':
    	flagh = 1;
    	break;
          case 'v':
    	flagv = 1;
    	break;
          case 'r':
    	flagr = 1;
     
     
    	break;
          case 'i':
    	flagi = 1;
     
     
       if (sscanf (optarg, "%s%s", oldf,newf ) !=2 )
       {
     
          fprintf (stderr, "Bad argument for -i option\n");
     
       }
       /* ne marche pas */ 
     
    	break; 
          case 'd':
    	flagv = 1;
    	break;             
         default:
     
    	lose = 1;
    	break;
          }
     
     
     
      if (lose || optind < argc)
        {
          if (optind < argc)
    	fprintf (stderr, "Too many arguments\n");
          fprintf (stderr, "Try `%s --help' for more information.\n", progname);
          exit (1);
        }
     
     
    // help 
      if (flagh)
        {
    etc.. pour tous les flags...
    Merci
    Comme le dit la doc, optarg pointe sur un argument d'option en temps normal. Il est renseigné par ce qui suit une option spécifiée dans le "optstring" de getopt(), qui est elle-même suivie du caractère ':' dans la chaine "opstring". optarg est donc renseigné ici pour tes options 'i' et 'r', c'est le premier point.

    Maintenant, quel est le séparateur basique des options sur la ligne de commande si ce n'est l'espace, afin de renseigner argc et argv ?

    Ce qui fait que si tu entres par exemple comme commande :
    <nom_programme> -i toto titi -r -h

    Tu n'auras que la chaine "toto" dans optarg. Tu peux essayer de mettre des double-quote ou d'échapper le caractère espace avec un backslash. Exples:
    <nom_programme> -i "toto titi" -r -h
    <nom_programme> -i toto\ titi -r -h

    optarg sera alors la chaine "toto titi" et le sscanf() fonctionnera. Tu peux aussi choisir un caractère délimiteur d'arguments d'options et ensuite analyser ta chaine pour obtenir tes arguments d'option :
    <nom_programme> -i toto,titi,tata -r -h

    optarg sera la chaine "toto,titi,tata". Il ne reste plus qu'à utiliser un tokenizer pour séparer les options d'arguments avec le délimiteur choisi.

    Il faut se renseigner sur son système pour savoir exactement comment est interprétée une commande et comment sont remplis argc et argv.

    A+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    Bonjour, merci
    mais par exemple quand on compile un programme avec gcc :
    on a bien :
    gcc -o prog1 prog1.c
    les arguments n'ont pas de delimiteur, et ce genre de programme est fait a l'aide de getopt comment est-ce possible alors qu'il puisse recuperer les arguments sans mettre de delimiteur ?


    Je peux par exemple dire que pour un type d'option donné je veux deux arguments séparé d'un espace avec getopt ?
    je suis un peu perdu j'ai beau lire la doc de getopt il n'est rien marqué sur le traitement de plusieurs arguments apart le fait de mettre : aprés l'option pour lui indiquer qu'il y a aura "UN" argument qui peut en comporter plusieurs..

    Sinon en fait ce code marche pour les entiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (sscanf (optarg, "%d-%d", &a,&b) !=2 )
       {
     
          fprintf (stderr, "Bad argument for -i option\n");
          exit(1);
     
       }
       printf("%d",a);
        printf("%d",b);
    Mais dés que je met des char[50] a la place de a et b ca plante.. il ne recupere pas les deux chaines merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (sscanf (optarg, "%s-%s", oldf,newf) !=2 )
       {
     
          fprintf (stderr, "Bad argument for -i option\n");
          exit(1);
     
       }
       printf("%s",oldf);
        printf("%s",newf);
    Merci

  9. #9
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par bonjour69
    Bonjour, merci
    mais par exemple quand on compile un programme avec gcc :
    on a bien :
    gcc -o prog1 prog1.c
    les arguments n'ont pas de delimiteur, et ce genre de programme est fait a l'aide de getopt comment est-ce possible alors qu'il puisse recuperer les arguments sans mettre de delimiteur ?
    Euh, il n'y a qu'un seul argument a -o, c'est prog1. Je ne connais aucune methode propre et securisee pour faire accepter deux arguments a une option via getopt().

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    bonjour,

    donc c'ets pas possible d'imiter la syntaxe de gcc a deux arguments par exemple

    gcc -o (arg1)fichier (arg2)fichier.c

    Merci

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par DaZumba
    Euh, il n'y a qu'un seul argument a -o, c'est prog1. Je ne connais aucune methode propre et securisee pour faire accepter deux arguments a une option via getopt().

  12. #12
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Oui, mais ce n'est pas securise puisque cela suppose que l'utilisateur "sait ce qu'il fait" (i.e. qu'il utilise les double quotes ou echappe l'espace avec \). gcc utilise des virgules pour imposer une syntaxe a l'utilisateur, plutot qu'un espace.

    Citation Envoyé par bonjour69
    donc c'ets pas possible d'imiter la syntaxe de gcc a deux arguments par exemple

    gcc -o (arg1)fichier (arg2)fichier.c
    Encore une fois, il n'y a qu'un seul argument a l'option -o, c'est fichier (personnellement, j'ecris toujours gcc fichier.c -o fichier, c'est plus clair). fichier.c n'est pas un argument a -o, et il est laisse par getopt() pour analyse ulterieure (boucle sur optind < argc).

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    Bonjour,

    ha daZumba tu viens de toucher du doigt mon probléme.
    ha je commence a comprendre s'il n'y a pas deux arguments mais qu'un.
    Mais le probléme c'est que dés que j'en mets il me met bloque ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          if (optind < argc)
    	fprintf (stderr, "Too many arguments\n");
          fprintf (stderr, "Try `%s --help' for more information.\n", progname);
          exit (1);
    Comment donc puis-je mettre deux arguments sans qu'il me bloque a optind < argc ?
    et comment puis-je alors exploiter cet argument?
    Vous n'auriez pas un exemple, je pense que ce serait bienvenu car la :s
    Merci

  14. #14
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Ok, voici un petit exemple simple.
    On veut un programme qui s'utilise comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    toto -s -a <arg> file
    toto --switch --argument <arg> file
    Voici le code (traitement d'erreur simpliste)
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    #include <stdio.h>
    #include <string.h>
    #include <getopt.h>
     
    int main(int argc, char *argv[])
    {
      static struct option longopts[] = 
      {
        {"switch", no_argument, NULL, 's'},
        {"argument", required_argument, NULL, 'a'},
        {NULL, 0, NULL, 0}
      };
     
      int c;
      int done = 0;
     
      int n_options_processed = 0;
     
      opterr = 0; /* turn off error messages from getopt() */
     
      while (done != 1)
      {
        c = getopt_long(argc, argv, "sa:", longopts, NULL);
     
        if (c == -1)
        {
          done = 1;
        }
        else
        {
     
          switch (c)
          {
            case 's':
              puts("Option s toggled.");
              n_options_processed++;
              break;
     
            case 'a':
              printf("Option a ");
              printf("with argument '%s'.\n", optarg);
              n_options_processed++;
              break;
     
            case '?':
            case ':':
              fprintf(stderr, "getopt_long() returned an error.\n");
              break;
     
            default:
              fprintf(stderr, "Unexpected character %c.\n", c);
          }
        }
      }
     
      if (n_options_processed > 0)
      {
        printf("%d option(s) processed.\n", n_options_processed);
      }
      else
      {
        puts("No options processed.");
      }
     
      /*
       * The last argument, <file>, has been left unprocessed by getopt_long()
       * so optind must be smaller than argc.
       * We assume that <file> is the first of those unprocessed arguments.
       * In case there is more, they are neglected, with an error message.
       */
      if (optind < argc)
      {
        printf("file is %s\n", argv[optind]);
     
        optind++;
        while (optind < argc)
        {
          printf("Neglected: %s\n", argv[optind++]);
        }
      }
      else
      {
        /*
         * No unprocessed arguments -> <file> is missing.
         */
        fprintf(stderr, "Argument <file> is missing.\n");
      }
     
      return 0;
    }
    L'important a comprendre, c'est que getopt_long() laisse l'argument <file> de cote, donc il est normal que optind soit inferieur a argc apres la boucle while. Il peut aussi arriver que l'utiliseur entre trop d'arguments, et on gere ce cas en le prevenant que les arguments en trop sont negliges.
    On teste:
    - Cas normal, version courte et longue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $> cc -W -Wall -pedantic toto99.c -o toto
    $> toto -s -a arg file
    Option s toggled.
    Option a with argument 'arg'.
    2 option(s) processed.
    file is file
    $> toto --switch --argument=arg file
    Option s toggled.
    Option a with argument 'arg'.
    2 option(s) processed.
    file is file
    - un argument non-processe en trop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $> toto -s -a arg file file2
    Option s toggled.
    Option a with argument 'arg'.
    2 option(s) processed.
    file is file
    Neglected: file2
    - pas d'options, deux arguments non-processes en trop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $> toto file file2 file3
    No options processed.
    file is file
    Neglected: file2
    Neglected: file3
    - les options seulement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $> toto -s -a arg
    Option s toggled.
    Option a with argument 'arg'.
    2 option(s) processed.
    Argument <file> is missing.
    - pas d'arguments du tout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $> toto
    No options processed.
    Argument <file> is missing.
    - pas d'argument donne pour l'option -a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $> toto -a
    getopt_long() returned an error.
    No options processed.
    Argument <file> is missing.
    En gros, on a quelque-chose qui fonctionne. C'est bien sur ameliorable, mais cela devrait te donner une idee. Notamment, a toi de voir si negliger les arguments en trop puis continuer comme si de rien n'etait est acceptable, ou si on doit renvoyer une erreur d'utilisation. En general, la deuxieme utilisation est plus prudente.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut
    Ha merci bien, je vais de ce pas étudier tout ça !

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

Discussions similaires

  1. comparer deux chaines de caractères
    Par peuf23 dans le forum Langage
    Réponses: 3
    Dernier message: 30/01/2006, 14h31
  2. Réponses: 4
    Dernier message: 06/12/2005, 15h12
  3. [langage] récupération d'une chaine
    Par sasame dans le forum Langage
    Réponses: 11
    Dernier message: 21/01/2005, 07h33
  4. Réponses: 5
    Dernier message: 06/10/2003, 17h49
  5. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38

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