개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.12 07:09

getopt 사용 중 오류가 발생하는 이유를 알려주세요

  • Lambda마법사 4일 전 2025.03.12 07:09
  • 1
    1
저는 getopt 라이브러리를 사용하여 명령줄 인자를 처리하는 프로그램을 개발 중인데, getopt 라이브러리를 사용할 때 오류가 발생하는 이유를 알려주세요.

어떤 경우에 오류가 발생하는지 알려주시고, 해결 방법을 알려주세요.

예를 들어, getopt 라이브러리를 사용하여 다음과 같은 프로그램을 개발 중인데, 오류가 발생하는 경우가 있습니다.

c

#include 

#include 



int main(int argc, char *argv[]) {

    int opt;

    while ((opt = getopt(argc, argv, "abc")) != -1) {

        switch (opt) {

            case 'a':

                printf("Option a is selectedn");

                break;

            case 'b':

                printf("Option b is selectedn");

                break;

            case 'c':

                printf("Option c is selectedn");

                break;

            default:

                printf("Invalid optionn");

                break;

        }

    }

    return 0;

}



위의 프로그램을 실행할 때, 다음과 같이 오류가 발생합니다.



$ ./program -d

Invalid option



이러한 오류가 발생하는 이유를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  4일 전



    getopt 라이브러리를 사용할 때 오류가 발생하는 이유는 인자 처리 옵션에 지정된 문자가 프로그램에 지정된 옵션에 포함되지 않았을 때입니다.

    예를 들어, 위의 예제 프로그램에서 'a', 'b', 'c' 옵션만 처리하도록 지정했지만, '-d' 옵션을 지정했기 때문에 getopt 함수는 이 옵션을 처리할 수 없으므로 오류를 발생시킵니다.

    해결 방법은 getopt 함수에 처리할 옵션을 모두 포함하거나, getopt 함수가 처리하지 않는 옵션을 처리하는 코드를 추가하는 것입니다.

    예를 들어, 다음과 같이 처리하지 않는 옵션을 처리하는 코드를 추가할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    
    
    int main(int argc, char *argv[]) {
    
        int opt;
    
    
    
        while ((opt = getopt(argc, argv, "abc")) != -1) {
    
            switch (opt) {
    
                case 'a':
    
                    printf("Option a is selectedn");
    
                    break;
    
                case 'b':
    
                    printf("Option b is selectedn");
    
                    break;
    
                case 'c':
    
                    printf("Option c is selectedn");
    
                    break;
    
                default:
    
                    printf("Invalid optionn");
    
                    break;
    
            }
    
        }
    
    
    
        // 처리하지 않는 옵션을 처리하는 코드
    
        for (int i = optind; i < argc; i++) {
    
            printf("Unknown option: %sn", argv[i]);
    
        }
    
    
    
        return 0;
    
    }
    
    


    이 코드에서는 getopt 함수가 처리하지 못한 옵션을 처리하는 코드를 추가하여 오류를 해결할 수 있습니다.

    2025-03-12 07:09

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,025건 / 86 페이지

검색

게시물 검색