Problème de traitement des paramètre avec getopt - C - Programmation
Marsh Posté le 11-05-2006 à 18:42:03
La question serait plus compréhensible si le code était joint.
Pour le cas présent, je coderais cela de la manière suivante :
int main(int argc, char **argv) |
Marsh Posté le 11-05-2006 à 18:56:58
julien_54 a écrit : ...j'ai peut être mal cherché... |
Peut-être...
julien_54 a écrit : Ce problème parle t'il à quelqun ? |
A beaucoup de monde. Mais le mieux est que tu lises toi-même la doc => http://man.developpez.com/man3/getopt.3.php
Marsh Posté le 12-05-2006 à 10:53:22
J'ai lu la spécification, et j'ai surtout lu ca :
"La fonction getopt() renvoie le caractère de l'option s'il en trouve une, `:' s'il manque un paramètre pour une option, `?' s'il y a un caractère inconnu, et EOF (-1) à la fin de la liste des options. "
Le problème c'est que ce n'est pas le comportement que j'observe... je voulais juste savoir si c'est un bug connu, où si c'est moi qui l'utilise mal
Code :
|
Marsh Posté le 12-05-2006 à 11:06:24
Je crois que le problème se situe sur la ligne
while ((c = getopt(argc, argv, ":c:v" )) != EOF) |
Au lieu de ":c:v", il faudrait avoir "c:v".
Marsh Posté le 12-05-2006 à 11:13:51
olivthill a écrit : Je crois que le problème se situe sur la ligne
Au lieu de ":c:v", il faudrait avoir "c:v". |
Oui mais non, man de getopt :
|
De toute façon, j'ai essayé avec et sans le ':' ...
Marsh Posté le 11-05-2006 à 14:47:16
Bonjour,
je n'ai pas trouvé de sujet la dessus (j'ai peut être mal cherché), donc je pose la question.
J'essai de faire un traitement des paramètres de la ligne de commande (argc argv), le plus propre possible.
Mon problème concerne l'utilisation de la commande getopt ; j'ai lu dans la spécification que la commande renvoie le caractère ':' si une option devant etre
suivie par un paramètre n'en a pas .
Or cela ne marche pas avec mon programme. En effet, si je lui passe "program -c -v", sachant que l'option -c demande un paramètre (-v pour le mode verbose, donc pas de paramètre),
la commande getopt ne renvoi pas ':' et du coup mon programme interpréte "-v" comme le paramètre de l'option "-c".
J'ai aussi lu que certaines versions de getopt sont buggée, mais l'explication était floue...
Ce problème parle t'il à quelqun ?