2014-04-09 2 views
0

나는 아주 간단한 프로그램을 가지고있다. 그러나 어떤 이유로 나는 옵션을 제대로 이해할 수 없다.간단한 getopts c 문제

  • -h 옵션이있는 경우 사용법 문장을 인쇄하고 종료하고 싶습니다.

  • 옵션이없는 경우 정상적으로 실행되기를 원합니다. 다른 옵션이있는 경우

  • 나는 그것을 사용을 인쇄 할 난 그냥 이런 결과를 얻을 수없는 이유 EXIT_FAILURE

. 나는 그 대답을 찾을 수없는 간단한 수정을 알고 있습니다.

지금 당장 가지고있는 내용입니다. 당신이 getopt(3) 맨 페이지를 읽어 보면

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

'case '*':'를'default :'로 옮깁니다. –

답변

1

는 : getopt()가 option 문자를 인식하지 못하는 경우

, 그것은 stderr에 오류 메시지, 저장 optopt의 문자가 반환을 '인쇄 ? '. 호출 프로그램은 사람이없는 옵션에 통과한다면, getopt()?를 반환 0

에 OPTERR 설정하여 오류 메시지를 방지 할 수 있습니다. 당신은 결코받을 수없는 *을 찾고 있습니다. C에서는 *이 와일드 카드로 작동하지 않으므로 "모든 문자"를 의미하지는 않습니다.

default을 사용하면 올바른 해결책이 아닙니다 (작동 할 수도 있음). 이는 처리기를 구현하지 않은 유효한 옵션에서 트리거되기 때문입니다.

+0

훌륭합니다. 정말 멍청 하하하. 그냥 쉘 스크립팅에 익숙해졌습니다. 답변 해주셔서 감사합니다. – Greg