getopt总是返回1

时间:2014-03-10 13:08:15

标签: c++ command-line-arguments getopt

我想起诉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 个答案:

答案 0 :(得分:4)

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)