2014-07-04 1 views
0

명령 줄 인수를 구문 분석하고이를 인쇄하려고합니다 ... 어떻게 getopt를 사용하여이 작업을 수행 할 수 있습니까?C에서 getopt를 통해 명령 줄 매개 변수 구문 분석

나중에 코드 개발을 위해 getopt가 필요합니다 /.

#include <ctype.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main (int argc, char **argv) 
{ 
    char *cvalue = NULL; 
    int c; 

    while ((c = getopt (argc, argv, "n1n2n3n4c:")) != -1)    
     switch (c): 
      case n1: 
      case n2: 
      case n3: 
      case n4: 
       for(int i=0; i<argc;i++) 
       { 
        printf("Option: d%", argv[i]); 
       } 
      default: break; 


    printf ("n1flag = %d, n2flag = %d, n3flag = %d, n4flag = %d cvalue = %s\n", 
       n1flag, n2flag, n3flag, n4flag, cvalue); 

    for (index = optind; index < argc; index++) 
     printf ("Non-option argument %s\n", argv[index]); 

    return 0; 
} 
+1

을 (http://www.gnu.org/software/libc/manual/html_node/Getopt.html) . – pzaenger

+0

Brian의 대답에 대한 추가 정보로, -nX 옵션을 원하면 인수가 필요한 단일 -n 옵션을 사용하고 수신 인수를 확인하십시오 (예 : 옵션이 'n'인 경우 optarg가 "5"이지만 -n5가 유효하지 않습니다). 그렇지 않으면 getopt_long_only를 사용하는 것을 고려해보십시오 - X Window System에서 요구하는 스타일의 옵션을 위해 생성 된 GNU 함수 (예 : "-display : X.Y"는 -display, X.Y는 옵션 인수). 그래도 문제가 해결되지 않으면 자신 만의 인수 파서를 만들 수 있습니다. –

답변

1

getopt는 당신이 대신 대신 그들에게 고유 한 문자를 줄 필요가 당신 때문에 등 N1, N2, N3, N4를 정의 할 수 없습니다, 옵션으로 하나의 문자를 사용합니다.

는 getopt는 맨 페이지를 참조하십시오 : 또한 [GNU C 라이브러리] 좀 걸릴 수 있습니다 http://linux.die.net/man/3/getopt