gpt4 book ai didi

c - 简单的 getopts c 问题

转载 作者:行者123 更新时间:2023-11-30 15:35:19 25 4
gpt4 key购买 nike

所以我有一个非常简单的程序,但由于某种原因我无法获得正确的选项。

  • 如果存在 -h 选项,我只想打印使用语句并退出。

  • 如果没有选项,我希望它正常运行。

  • 如果存在任何其他选项,我希望它打印用法和 EXIT_FAILURE

由于某种原因我无法得到这些结果。我知道这是一个简单的修复,但我似乎找不到答案。

现在这就是我所拥有的。

int main(int argc, char* argv[]){
int c;

while(( c = getopt( argc, argv, "h")) != -1){
switch( c ){
case 'h':
usage(); return EXIT_SUCCESS;

case '*':
usage(); return EXIT_FAILURE;

default:
break;
}
}
mainProgram();
return EXIT_SUCCESS;
}

最佳答案

如果您阅读了 getopt(3) 手册页:

If getopt() does not recognize an option character, it prints an error message to stderr, stores the character in optopt, and returns '?'. The calling program may prevent the error message by setting opterr to 0.

因此,如果有人传入无法识别的选项,getopt() 将返回 ?。您正在寻找 *,但您永远不会收到它。在 C 中,* 不充当通配符,因此这并不意味着“任何字符”。

此处使用 default 并不是正确的解决方案(尽管它会起作用),因为这也会触发您尚未实现处理程序的有效选项。

关于c - 简单的 getopts c 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969734/

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