gpt4 book ai didi

c - 在getopt中解析 '?'

转载 作者:行者123 更新时间:2023-11-30 15:55:04 24 4
gpt4 key购买 nike

void display(char * str){
printf("%s: Missing file\n", str);
}

int main(int argc, char **argv)
{

int longIndex, opt = 0;
const char *optString = "h?";

static const struct option longOpts[] = {
{ "help", no_argument, NULL, 'h' },
{ NULL, no_argument, NULL, 0 }
};

opt = getopt_long( argc, argv, optString, longOpts, &longIndex );
while( opt != -1 ) {
switch( opt ) {
case 'h':
case '?':
display(argv[0]);
break;

default:
break;
}

opt = getopt_long( argc, argv, optString, longOpts, &longIndex );
}

return 0;
}

这段代码编译得很好,但是当我运行它时:

./a.out ?

它不调用显示。我错过了什么?

最佳答案

问号“?”当 getopt 发现 optstring 中不存在的参数时,或者检测到缺少选项参数时,getopt 将返回该参数,因此您不应使用'?'在 optstring 中,因为它是为此保留的,相反,您应该使用更传统的“h”来寻求帮助。

请参阅man page

编辑:这是一个例子:

switch (opt) {
case 'n':
some_flag = 1;
break;
case 'h': /* help */
default: /* '?' unknown opt or missing arg*/
fprintf(stderr, "Usage: %s [-n nsecs] \n", argv[0]);
exit(EXIT_FAILURE);
}

关于c - 在getopt中解析 '?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12540964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com