getopt problem

getopt problem - C - Programmation

Marsh Posté le 22-03-2005 à 03:17:06    

:hello: ,
 
le program doit se lancer comme ca :
./sftp [servename] -l -p bla.cpp
Getop me parrait donc approprie, helas [servername] bloque tout.
 

Code :
  1. while ((param = getopt (argc, argv, "lp:r:g:b:d:" )) != EOF) {
  2.      switch (param) {
  3.         case 'l': dir(send, receive);  break;
  4.         defaultbreak;
  5.       }
  6.    }
  7.    //argument without parameter
  8.        if (optind < argc) {
  9.         printf ("non-option ARGV-elements: " );
  10.        while (optind < argc)
  11.         printf ("%s ", argv[optind++]);
  12.       printf ("\n" );
  13.   }


 
il atterit dans non-option ARGV-elements et du coup ne passe pas dans la premiere boucle.
 
comment remedier a ce problem, en lui disant par example d inclure le premier argument [servername] dans la boucle :/
 
merci
 

Reply

Marsh Posté le 22-03-2005 à 03:17:06   

Reply

Marsh Posté le 22-03-2005 à 04:21:03    

En principe on ne fait pas de traitement dans la boucle getopt, parce que ça ne permet pas de gérer correctement les cas d'erreur (par exemple si l'utilisateur entre un flag non supporté après le -l). Dans ton getopt, contente toi de positionner des flags (l_flag = 1...), et deplace tes traitements (appel à dir...) après le getopt et la lecture des "non-option arguments".

Reply

Marsh Posté le 22-03-2005 à 05:45:26    

Pour les flags tu veus dire un truc genre si -l
l_flag = 1, et ensuite je fait un switch (l_flag).
ok, mais il nexecute toujours pas le -l et me sort direct  
 
non-option ARGV-elements: pompeii -l
:/
comment lui dire de regardez qu apres le premier argument

Reply

Marsh Posté le 22-03-2005 à 07:47:00    

argp est bien pour gérer les options, et je pense que ca sera assez facile a utiliser pour ton cas. ( ensuite les 1001 pour et contre de son utilisation par rapport a getopt et vice/versa je les connais pas, donc dslé si je provoque une crise cardiaque chez un expert :/ )

Reply

Marsh Posté le 22-03-2005 à 09:59:48    

:/
solaris ne veus pas entendre parler de iclude <argp.h>
si seulement getopt ne tenez pas compte du premier argument, une solution est d utilile les long-opt, en fesant passer l argument1 pour une option mais deja est ce que ca marchera en dynamique je ne pense pas.
 

Reply

Sujets relatifs:

Leave a Replay

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