최종호씨 말대로 기본은 전자의 경우입니다.
원하시는게 전자인 경우라면, 아마도 질문을 안하셨을것 같구요.
후자의 경우라면
getopt(argc, argv, "a:")
라고 해서
case 'a':
부분에서 optarg를 이용하여 문자열을 얻어오면 -ab라는 묶어진 Option을 구분해 낼 수 있을것 같습니다.
질문하신 예를 기준으로 보면,
a -abc
라고 하면 case 'a':
에서 optarg는 "bc"를 가르키게 되니까...
Program에서 Option "abc"가 들어왔구나 판단하실 수 있을것 같은데요..
질문 자체가 조금 모호해서 제 의견도 다소 모호하게 했네요.. ^^
Re: 급질요. C 에서 옵션 주기
a -a 를 처리하는곳에다가 a다음문자를 읽어보고 처리하시면 될듯..
----------------------------------------------------------------------------
옵션을 이어서 처리하고 싶으시다는게-ab 를 -a -b 로 인식하
옵션을 이어서 처리하고 싶으시다는게
-ab 를 -a -b 로 인식하고 싶다는 것인지 옵션 이름을 "ab" 로 주고
싶으신 것인지 확실치가 않네요.
getopt() 에서는 전자는 기본으로 지원하는 사항이니 후자일 듯 한데,
'옵션을 이어서 처리하고" 싶으시다는 것을 봐서는 전자일지도 모르겠다는 생각이 듭니다.
후자의 경우는 직접 argc, argv 를 옮겨가며 코딩을 하셔도 되고,
GNU 환경이면 getopt_long() 이라는 것도 있는 듯 하고요,
AutoGen/AutoOpts 나 비슷한 코드생성 툴을 사용하셔도 될 듯 합니다.
최종호씨 말대로 기본은 전자의 경우입니다.원하시는게 전자인 경우라면,
최종호씨 말대로 기본은 전자의 경우입니다.
원하시는게 전자인 경우라면, 아마도 질문을 안하셨을것 같구요.
후자의 경우라면
getopt(argc, argv, "a:")
라고 해서
case 'a':
부분에서 optarg를 이용하여 문자열을 얻어오면 -ab라는 묶어진 Option을 구분해 낼 수 있을것 같습니다.
질문하신 예를 기준으로 보면,
a -abc
라고 하면 case 'a':
에서 optarg는 "bc"를 가르키게 되니까...
Program에서 Option "abc"가 들어왔구나 판단하실 수 있을것 같은데요..
질문 자체가 조금 모호해서 제 의견도 다소 모호하게 했네요.. ^^
Re: 급질요. C 에서 옵션 주기
a -ab 이면
main에서 받는 argv[1] 이 -ab 이구요
- 이면 옵션처리 루틴만드시고
argv[1] 문자열을 다른 함수에 넘기던가 해서 길이 체크하시면 젤 쉬울것 같네요
ps. ls -al 처럼 al 옵션 처리를 하는 경우 입니다.
언제나 시작
Re: 급질요. C 에서 옵션 주기
그런것들은 빈번하게 일어나기 때문에
getopt란 인터페이스가 존재합니다 :)
man 3 getopt
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
더 잘쓰시려면.. getopt_long 아.. 함수 이름이 헛갈리네..
더 잘쓰시려면.. getopt_long 아.. 함수 이름이 헛갈리네.. getopt 찾아보시면.. 같이 나오는 건가.. 끝에 더보라고 하는데 나오나 하여간..
getopt의 확장형들이 있구요. 메뉴얼 페이지에 예제까지 있는 함수에요..
그만큼 한번에 이해 하기 힘들다는 이야기도 되구요.
Do you think that's the air you are breathing now?
꼭 getopt 를 고집할 이유가 없다면argp 를 사용하시는 것
꼭 getopt 를 고집할 이유가 없다면
argp 를 사용하시는 것도 좋을 듯 합니다.
일단 이거 사용하면 phscom님께서 고민하시는건 간단히 해결됩니다.
argp 가 전 개인적으로 더 맘에 들더군요.
http://www.gnu.org/software/libc/manual/html_node/Argp.html#Argp
댓글 달기