我有一个程序getopt_get()
用来解析命令行参数。我的代码是这样的:
int opt;
int optionIndex;
static struct option longOptions[] = {
{"help", no_argument, NULL, 'h'},
{"test", no_argument, NULL, 't'},
{0, 0, 0, 0}
};
while ((opt = getopt_long(argc, argv, "ht", longOptions, &optionIndex)) != -1) {
switch (opt) {
case 'h':
help();
return 0;
break;
case 't':
init();
test();
return 0;
break;
case '?':
help();
return 1;
break;
default:
printf("default.\n");
}
当我将正确的命令行参数传递给程序时,它运行良好。但是当错误的参数传递给程序时,它会打印出像这样烦人和多余的词。
例如,我将错误的参数“q”传递给程序
$ ./program -q
./program: invalid option -- 'q'
Usage: -h -t
当有错误的参数时,我只希望它运行我的函数help()
而不打印任何单词。
./program: invalid option -- 'q'
我怎样才能停止getopt_long
打印这个烦人的词而什么也不打印?
阅读精美的手册...
如果
getopt()
不能识别选项字符,它会向stderr打印一条错误消息,将字符存储在optopt 中,并返回“?”。调用程序可以通过将opterr设置为 0来阻止错误消息。
所以,在调用之前试试这个getopt_long
:
opterr = 0;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句