ich die folgende C-Code versuche aus (gespeichert in Datei namens testgetopt.c):C: getopt(): Option scheint nicht zu wirken
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <ctype.h>
void usage(char *s)
{
fprintf(stderr, "Usage: %s [-d] -i input-TIFF-file -o output-raw-file\n", s);
fprintf(stderr, "Note: -d indicates debugging option\n");
}
int main(int argc, char **argv) {
char c;
size_t i;
char *itext = NULL, *otext = NULL;
FILE *fout;
short debug = 0;
if ((c = getopt(argc, argv, "di:o:")) == EOF) {
usage(argv[0]);
exit(1);
}
while ((c = getopt(argc, argv, "di:o:")) != EOF) {
switch (c) {
case 'd':
debug = 1;
break;
case 'i':
itext = optarg;
break;
case 'o':
otext = optarg;
break;
case '?':
if (optopt == 'i' || optopt == 'o')
fprintf (stderr, "Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
else
fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt);
usage(argv[0]);
exit(1);
default:
fprintf(stderr, "Both -i and -o are needed\n");
usage(argv[0]);
exit(1);
}
}
printf("debug = %i\n", debug);
if (debug)
printf ("input file = %s, output file = %s\n", itext, otext);
return EXIT_SUCCESS;
}
ich kompilieren mit:
gcc testgetopt.c
Aber unabhängig davon, ob ich -d oder nicht, habe ich immer Debug-Set auf 0 gesetzt. Das Programm sollte -D Debug auf 1, 0 gesetzt haben, sonst.
Was wird falsch gemacht?
Hier sind die Beispiele:
Versuchen wir zunächst ohne -d
./a.out -i in.dat -o out.dat
debug = 0
Lassen Sie uns als nächstes versuchen, mit -d enthalten.
./a.out -d -i in.dat -o out.dat
debug = 0
Vielen Dank im Voraus für jede Hilfe und Anregungen!
Wie haben Sie versucht zu debuggen? Das Ausdrucken der Ergebnisse von "getopt" innerhalb der Schleife würde Ihnen Daten liefern, auf denen Sie eine Theorie über das, was vor sich geht, aufbauen können, obwohl nette Stapel-Überflieger großzügig diese Arbeit für Sie erledigt haben. –