getopt всегда возвращает 1

Я хочу использовать 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;
      }
  }

person Abruzzo Forte e Gentile    schedule 10.03.2014    source источник


Ответы (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)
person Sakthi Kumar    schedule 10.03.2014