Прочитав это link о том, как использовать getopt()
, я пытаюсь получить небольшой пример.Простейшая возможная программа getopt, которую я могу получить?
То, что я хочу, это что-то вроде:
./prog -v # show me prog version
./prog -f filename # just show me the filename I entered from the command line
Вот что я писал до сих пор:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int
main(int argc, *argv[]) {
char VER[] = "0.1.1";
int opt;
opt = getopt(argc, argv, "vf:");
char *filename;
while (opt != -1) {
switch(opt) {
case 'v':
printf("version is %s", VER);
break;
case 'f':
filename = optarg;
break;
}
}
printf("The filename was %s", filename);
return 0;
}
компилировать код с:
$ gcc prog.c -o prog -Wall -Wextra
Я могу» t, похоже, понимает, когда я запускаю его с помощью опции -v
, он никогда не останавливает печать версии и с -f filename
он останавливается и никогда не печатает имя файла, которое я ввел.
Это даже компилируется? Что такое '' vf ''в сигнатуре' main'? –
Предполагая, что вы прочитали весь текст в моем вопросе, да, он компилируется, иначе я не стал бы спрашивать о проблемах, возникающих при запуске программы. v и f - доступные варианты (-v и -f). Значение: после f означает, что -f хочет получить еще один параметр от пользователя. – yaku
Ну, так как вы опубликовали * не * компилировали, я думаю, что мой вопрос был разумным. –