0
我该如何处理用户在参数的长版本之前只输入一个破折号的情况?使用getopt_long处理用户错误
例如,运行我的程序与-copy
$ my_program -copy Copy Open my_program: invalid option -- p Unknown
它是在执行o
选项的问题。我的目标是显示一个错误报告,这是一种心态,“你在一个短划线之后键入了多个字符”。
代码
#include <getopt.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
struct option options[] =
{
{"open", no_argument, 0, 'o'},
{"copy", no_argument, 0, 'c'},
{0, 0, 0, 0}
};
int c;
int option_index = 0;
while ((c = getopt_long(argc, argv, "oc", options, &option_index)) != -1)
{
switch (c)
{
case 'o':
printf("Open\n");
break;
case 'c':
printf("Copy\n");
break;
default:
printf("Unknown\n");
return 0;
}
}
return 0;
}
如果您不希望单个字母的选项不明确,不指定它们。或者等到您执行任何操作之前解析了所有选项。 – 2014-10-03 04:22:29