1

例如,

我有以下结构选项:

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

4

1 回答 1

0

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

于 2014-06-03T14:08:28.537 回答