Edu*_*ure 1 c linux glibc getopt getopt-long
我有一个程序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");
}
Run Code Online (Sandbox Code Playgroud)
当我将正确的命令行参数传递给程序时,它运行良好。但是当错误的参数传递给程序时,它会打印出像这样烦人和多余的词。
例如,我将错误的参数“q”传递给程序
$ ./program -q
./program: invalid option -- 'q'
Usage: -h -t
Run Code Online (Sandbox Code Playgroud)
当有错误的参数时,我只希望它运行我的函数help()而不打印任何单词。
./program: invalid option -- 'q'
Run Code Online (Sandbox Code Playgroud)
我怎样才能停止getopt_long打印这个烦人的词而什么也不打印?
阅读精美的手册...
如果
getopt()不能识别选项字符,它会向stderr打印一条错误消息,将该字符存储在optopt 中,并返回“?”。调用程序可以通过将opterr设置为 0来阻止错误消息。
所以,在调用之前试试这个getopt_long:
opterr = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |