所以我有一个非常简单的程序,但由于某种原因,我无法正确选择。
如果-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;
}
答案 0 :(得分:1)
如果您阅读getopt(3)
手册页:
如果getopt()无法识别选项字符,则会向stderr输出错误消息, 将角色存储在optopt中,并返回'?'。调用程序可以防止错误 将opterr设置为0。
因此,getopt()
如果有人传入无法识别的选项,则会返回?
。您正在寻找永远不会收到的*
。在C中,*
不作为通配符,因此这并不意味着"任何字符"。
使用default
这里不是正确的解决方案(尽管它会起作用),因为这也会触发您尚未实现处理程序的有效选项。