getopt_long_only:如何防止下一个选项被用作前一个选项的参数" required_argument"旗

时间:2014-06-03 13:51:59

标签: c arguments getopt getopt-long

例如,

我的结构选项如下:

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)。

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是在你读完所有内容后,简单地检查为-input传递的参数是否等于-flag。例如,如果你要存储所需的参数在char *temp中输入,只需检查strcmp(temp, "-flag")是否为非零。如果它为零(即,它们键入./program -input -flag),则打印错误消息并退出。