getopt()
ne se comporte pas comme je m'attends à des options courtes.comportement getopt() est inhabituel
par exemple: Invoquer le programme ci-dessous avec un paramètre manquant:
Case valide: testopt -d dir -a action -b build
Erreur de cas: testopt -d -a action -b build
Cela ne jette aucune erreur que je me attendais à un opérande de message d'erreur manquant pour -d
- Est-ce un bug connu?
- Si oui, existe-t-il un correctif standard disponible?
Mon code:
#include <unistd.h>
/* testopt.c */
/* Test program for testing getopt */
int main(int argc, char **argv)
{
int chr;
while ((chr = getopt(argc, argv, ":d:a:b:")) != -1)
{
switch(chr)
{
case 'a':
printf("Got a...\n");
break;
case 'b':
printf("Got b...\n");
break;
case 'd':
printf("Got d...\n");
break;
case ':':
printf("Missing operand for %c\n", optopt);
break;
case '?':
printf("Unknown option %c\n", optopt);
break;
}
}
printf("execution over\n");
return 0;
}
L'invocation n'est pas sous le contrôle du programme et donc je pense que vérifier si le premier caractère est "-" est une solution comme vous l'avez dit. –