例如,
我的结构选项如下:
struct option options[] = {
{"input", required_argument, NULL, OPT_INPUT},
{"flag", no_argument, NULL, OPT_FLAG},
}
现在,如果程序的用户错误地在-input命令之后省略了输入文件名,则传递标志,如下所示:
./program -input -flag
getopt_long_only将“-flag”视为输入的参数,因此将其作为程序中的输入文件,而不是下一个参数(因此在-input之后传递没有参数的返回错误)。如何避免这种情况?
我正在使用GUN / LINUX(2.6.34.3)和gcc(GCC)4.4.2 20091027(Red Hat 4.4.2-7)。
答案 0 :(得分:0)
我认为最简单的方法是在你读完所有内容后,简单地检查为-input传递的参数是否等于-flag。例如,如果你要存储所需的参数在char *temp
中输入,只需检查strcmp(temp, "-flag")
是否为非零。如果它为零(即,它们键入./program -input -flag
),则打印错误消息并退出。