getopt 总是返回 1

Posted

技术标签:

【中文标题】getopt 总是返回 1【英文标题】:getopt always returns 1 【发布时间】:2014-04-13 14:33:50 【问题描述】:

我想使用getopt 来获取我的控制台工具的参数列表。 当我像下面这样调用我的工具getopt 时,总是返回1 并且不匹配任何switch/case

我是不是做错了什么?

  mytool -f farg -d darg

  int 
  main(int argc, char** argv) 
  int c;
  while((c = getopt(argc, argv, "f:d:h") != -1)) 

      switch(c) 
        case'f':
        break;

        default:
        break;
      
  

【问题讨论】:

【参考方案1】:
while((c = getopt(argc, argv, "f:d:h") != -1))

它像

c = (getopt(argc, argv, "f:d:h") != -1)

嗯,那总是 1,因为比较的结果存储到 c。在您的情况下,getopt 不会返回 -1。如果它返回-1,那么c 将是0。解决方法是

while((c = getopt(argc, argv, "f:d:h")) != -1)

【讨论】:

以上是关于getopt 总是返回 1的主要内容,如果未能解决你的问题,请参考以下文章

OSX 上的getsockopt 返回不正确的值?

Bash getopts,参数没有被传递给选项

Linux中getopt详解

python之getopt

使用getopt_long来解析参数的小函数模板

如何在 bash 中使用 getopts 的示例