当有错误的命令行参数时,如何让 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");
    }   

当我将正确的命令行参数传递给程序时,它运行良好。但是当错误的参数传递给程序时,它会打印出像这样烦人和多余的词。

例如,我将错误的参数“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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章