GETopt

GETopt - C - Programmation

Marsh Posté le 29-10-2005 à 12:42:08    

Bonjour est ce que quelqu un sait comment utiliser la fonction getopt avec plusieur options en parametre?
merci

Reply

Marsh Posté le 29-10-2005 à 12:42:08   

Reply

Marsh Posté le 29-10-2005 à 12:48:57    

Quel est ton système exploitation, quel est ton compilateur ?
Je ne trouve pas GETOpt sous Windows avec mon Borland C.
 
Si c'est pour manipuler des fonctions pouvant avoir plusieurs paramètres, il faut utiliser va_start, va_arg, et va_end. Par exemple :
 

Code :
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. /* calculate sum of a 0 terminated list */
  4. void sum(char *msg, ...)
  5. {
  6.    int total = 0;
  7.    va_list ap;
  8.    int arg;
  9.    va_start(ap, msg);
  10.    while ((arg = va_arg(ap,int)) != 0) {
  11.       total += arg;
  12.    }
  13.    printf(msg, total);
  14.    va_end(ap);
  15. }
  16. int main(void) {
  17.    sum("The total of 1+2+3+4 is %d\n", 1,2,3,4,0);
  18.    return 0;
  19. }


 
Edit: Je me souviens maintenant que cela existe sous Unix. Par exemple :

Code :
  1. while( (c = getopt(argc, argv, "Ve:T:P:H:" )) != EOF )
  2.   {
  3.    switch(c)
  4.     {
  5.      case 'V' : vflag++ ; out++ ; break ;
  6.      case 'e' : CB_Environ = optarg ; break ;
  7.      case 'T' : tunes  = optarg ; break ;
  8.      case 'P' : strcpy( Input_Code, optarg );break;
  9.      case 'H' : strcpy( Input_Time, optarg );break;
  10.      case '?' : errflg++ ; out++ ; break ;
  11.     }
  12.   }


Message édité par olivthill le 29-10-2005 à 12:51:40
Reply

Marsh Posté le 29-10-2005 à 12:51:07    

C'est du c-unix, man 3 getopt.
merci

Reply

Marsh Posté le 29-10-2005 à 13:17:55    

getopt est pas standard. Ni ISO, ni POSIX, c'est donc propre à ton OS.

Reply

Marsh Posté le 29-10-2005 à 14:01:09    

A ton avis ce code me permettra de passer plusieurs parametre en ligne?

Reply

Marsh Posté le 29-10-2005 à 14:25:27    

Oui, le code, que je montre plus haut, permet de lire plusieurs paramètres qui sont passés sur la ligne de commande. C'est un code qui marche et j'ai juste fait un copier/coller pour montrer un exemple. Dans mon cas le programme sera par exemple appelé avec la ligne de commande :

le_prog.exe -V -e1 -T2 -Ptoto -Htiti

On peut avoir soit un flag seul (ex : -V), ou bien un flag avec une chaine de caractères (ex : -Ptoto (mais dans ce dernier cas, je ne suis plus très sûr s'il faut coller "toto" derrière "-P" ou s'il faut un espace)).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed