【发布时间】:2021-08-03 15:18:43
【问题描述】:
我正在通过以下方式使用getopt:
while ((c = getopt(argc, argv, ":a:b")) != -1) {
switch (c) {
case 'a':
printf("option: a argument: %s\n", optarg);
break;
case 'b':
printf("option: b\n");
break;
case ':':
if(optopt == 'a') {
printf("option: a argument: default\n");
else {
fprintf(stderr, "argument required!\n");
}
}
这个想法是让选项a 接受一个可选参数,如果没有提供则使用默认值。
但是,如果我这样运行我的程序:
./main -a -b,最终打印出来的是:
option a: argument -b
我想要的是:
option: a argument: default
option: b
我怎样才能让getopt 意识到-a 后面的内容实际上是另一种选择,而不是它的论点?
【问题讨论】: