J'essaie d'utiliser la fonction getopt_long()
pour la première fois seulement J'ai des problèmes avec les arguments qui ne sont pas des drapeaux. Par exemple, dans mon code quand un argument inconnu est donné, je veux l'utiliser comme un fichier d'entrée. Quand je cours ceci avec seulement un nom de fichier il n'est pas imprimé, si j'utilise d'abord un drapeau, n'importe quel drapeau, alors je peux l'imprimer.getopt_long() et les paramètres qui ne sont pas des drapeaux?
Comment puis-je résoudre ce problème?
#include <stdio.h>
#include <getopt.h>
static struct option long_options[] = {
{"help", no_argument, 0, 'h'},
{"input", required_argument, 0, 'i'},
{"output", required_argument, 0, 'o'},
{"algorithm", required_argument, 0, 'a'},
{0, 0, 0, 0}
};
int main(int argc, char *argv[]) {
int c;
int option_index = 0;
while(42) {
c = getopt_long(argc, argv, "hi:o:a:", long_options,
&option_index);
if(c == -1)
break;
switch(c) {
case 'h': /* --help */
printf("--help flag\n");
break;
case 'i': /* --input */
printf("--input flag\n");
break;
case 'o': /* --output */
printf("--output flag\n");
break;
case 'a': /* --algorithm */
printf("--algorithm flag \n");
break;
default: /* ??? */
fprintf(stderr, "Invalid option");
return 1;
}
if(optind < argc) {
printf("other arguments: ");
while(optind < argc) {
printf ("%s ", argv[optind]);
optind++;
}
printf("\n");
}
}
return 0;
}