【问题标题】:getopt always returns 1getopt 总是返回 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;
      }
  }

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2019-10-10
      • 2017-03-20
      • 2013-11-04
      • 2011-12-09
      • 2012-07-08
      相关资源
      最近更新 更多