我有一个程序,您可以在其中输入一个选项
-d
,然后无论您是否在选项后提供非可选参数,都可以做一些事情。
这是我的代码:
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
#define OPT_LIST "d::"
int main (int argc, char *argv[])
{
int c;
char string[] = "blah";
while ((c = getopt (argc, argv, OPT_LIST)) != -1)
{
switch (c)
{
case 'd':
printf("%s\n", optarg);
break;
case '?':
fprintf(stderr, "invalid option\n");
exit(EXIT_FAILURE);
}
}
}
因此,如果您在选项后输入非可选参数,它会打印该参数。但是如果用户不提供非可选参数,我希望它打印出字符“字符串”(这就是我将双冒号放在 OPT_LIST 中的原因)。但我不知道如何做到这一点,所以任何帮助将不胜感激。
以下是我运行程序时发生的情况:
user:desktop shaun$ ./arg -d hello
hello
user:desktop shaun$ ./arg -d
./arg: option requires an argument -- d
invalid option
我正在使用 C 语言运行带有 OS X 的 Mac。