Ich versuche, Kommandozeilenargumente mit getopt() zu analysieren. Unten ist mein Code. getopt() gibt immer -1 zurück, egal welche Argumente ich beim Ausführen des Programms übergebe.getopt immer zurück -1/getopt nichts tun
Zum Beispiel:
$ gcc -o test test.c
$ ./test f
Kann jemand sehen, was ich falsch mache? Vielen Dank.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
void usage (char * progname)
{
fprintf(stderr, "Usage Instructions Here ...\n");
exit(-1);
}
int main (int argc, char *argv[])
{
int opt;
while((opt = getopt(argc, argv, "?hf:")) != -1) {
switch(opt) {
case '?':
case 'h':
usage(argv[0]);
break;
case 'f':
{
FILE *fp;
char *filename = strdup(optarg);
if((fp = fopen(filename, "r")) == NULL) {
usage(argv[0]);
}
}
break;
default:
fprintf(stderr, "Error - No such opt, '%c'\n", opt);
usage(argv[0]);
}
}
return(0);
}
Also .. Was sind die Beispiele dafür, wie Sie es ausführen? –
Optionen sollten mit '-' oder' --' beginnen. –