2013-10-08 1 views
0

C에서 하이픈없이 인수를 구문 분석하려면 어떻게해야합니까?하이픈없는 인수 C

즉 virsh를 설치 VM

또는

자식 끌어 오기 원산지 마스터

에는이 있다면 나는 그것을 밖으로 시도하지

'-'그냥 무시됩니다 모든 접두사와는 argc 반환 1 (을 argv [ 0]은 프로그램 호출입니다).

저는 리눅스를 사용하고 있습니다 만, 이것을 달성하기위한 크로스 플랫폼 방법이 있다면 좋을 것입니다.

감사합니다.

업데이트 : 문제는 나에게 # 인자를 넘겨 주려고했는데 #XX 예를 들어 number_program # 12를 넘겨 주려고했는데이 작업을 말할 필요가 없다.

+0

당신이 무엇을 요구하고 있는지 매우 명확하지 않습니다. *** [READ] (http://stackoverflow.com/help/how-to-ask) *** 좋은 질문을하는 데 도움이됩니다. – ryyker

+0

음, 당신의'argc'와'argv'는 명령 행에 무엇이든지 반영 할 것입니다. – chrisaycock

답변

1

몇 가지 라이브러리를 사용하여 인수를 구문 분석하고 있습니까? 특별히 C 프로그램에 매개 변수를 전달할 때 특별한 '하이픈'인수는 없습니다. 하지만 argv를 분석하는 것은 좋아합니다. 예를 들어

:

#include <stdio.h> 

int main(int argc, char **argv) 
{ 
     int i; 
     for(i=0; i<argc; i++) { 
       //dont do this without proper input validation 
       printf("%s\n", argv[i]); 
     } 

     return 0; 
} 

예 실행은 :

$ ./a.out test test test -hyphen 
./a.out 
test 
test 
test 
-hyphen 
1

argv 프로그램 이름과 그들이 명령 행에서 주어진 순서에 따라 프로그램의 인수를 포함합니다. * 하이픈은 특별하지 않습니다. 사람들과 컴퓨터가 다른 args와 옵션을 쉽게 구분할 수 있습니다.

args를 특정 방식으로 해석하고 싶다면 이것이 특권입니다. 그게 git입니다. 기본적으로 서브 명령의 이름으로 argv[1] (존재한다면, 물론)을 해석합니다. 그리고 그렇게하기 위해 라이브러리가 필요하지 않습니다. args 해석 방법을 결정할 필요가 있습니다.

* arguls가 구문 분석되는 방법에 따라 일부 플랫폼 간 차이점이 있습니다. * nix는 일반적으로 사전 구문 분석을 수행하고 와일드 카드 패턴을 확장합니다. 이러한 차이점을 이해하고 준비가 되었다면 100 % 크로스 플랫폼 호환성을 가질 수 없습니다.