2014-04-29 5 views
-7

저는 C++로 프로그램을 작성하고 컴파일러는 G ++C++ 프로그램 플래그

입니다. 이제 터미널에 ./main을 입력하고 실행하면 입력됩니다.

는 그러나 나는 깃발 같은 것을 추가 할 : - 사과 또는 ./main - 오렌지

사과와 오렌지가 하나의 동일한 문제를 계산하는 두 가지 방법이 있습니다 ./main. 어떻게 만들 수 있습니까?

우리가 리눅스를 할 때 대시를 입력 할 수 있습니다. 어떻게 작동하고 프로그램에서 무엇을해야합니까?

모든 예제 또는 링크?

미리 감사드립니다.

+1

다시 투표하기 : 이것은'main' 함수에 인자를 전달하는 것과 그것에 접근하는 방법입니다. 전혀 넓지는 않습니다. –

+0

트루 토마스, 조금 명확하지 않지만. OP : C++에서 인수를 전달하거나 수신하는 데 문제가 있습니까? 아니면 G ++ 컴파일러에서 전달하는 방법을 모르는 경우 문제가 있습니까? 나는이 질문을 광범위하게 생각하지 않는다. 문제를 해결하려고 시도한 것에 대한 코드를 제공하지 않고 (Salgar가 지적한 바와 같이) 코드를 제공하지 않고 무엇을 요구하고 있는지, 그리고 왜 그렇게하지 않았는가에 대해 명확하지 않다. 당신. – Nunser

답변

4
int main(int argc, const char* argv[]) { 
    for(int i = 0; i < argc; ++i) { 
     // argv[i] contains your argument(s) 
    } 
} 

좀 더 세부 정보 : 하나는 프로그램에주는 인수의 수를 할당 int, 하나 const char* []을 :

프로그램에 전달 된 인수를 받아들이는 main에 두 개의 인수를 추가하여 수행 할 수 있습니다 이것은 C 문자열의 배열입니다.

한 예 : appleorange 인수에 반응해야하는 main 프로그램이 있다고 가정 해보십시오. 전화는 ./main apple orange과 같이 보일 수 있습니다. argc은 3 ("main", "apple"및 "orange")으로 계산되며 배열을 반복하면 3 개의 문자열이 생성됩니다.

// executed from terminal via "./main apple orange" 
#include <string> 
int main(int argc, const char* argv[]) { 
    // argc will be 3 
    // so the loop iterates 3 times 
    for(int i = 0; i < argc; ++i) { 

     if(std::string(argc[i]) == "apple") { 
      // on second iteration argc[i] is "apple" 
      eatApple(); 
     } 

     else if(std::string(argc[i]) == "orange") { 
      // on third iteration argc[i] is "orange" 
      squeezeOrange(); 
     } 

     else { 
      // on first iteration argc[i] (which is then argc[0]) will contain "main" 
      // so do nothing 
     } 
    } 
} 

당신은 단지 ./main orange처럼, 하나 개의 인수를주고, 오렌지를 짜하려는 경우, 응용 프로그램의 인수에 따라 작업을 수행 할 수 있습니다이 방법.

+0

사실, else 문일뿐입니다. – Euler