2013-10-11 2 views
0

argc 및 argv를 사용하여 명령을 통해 프로그램을 열고 싶다고 가정합니다. 프로그램 이름을 열고 프로그램을 엽니 다. 그것은 당신에게 .exe를 제공합니다. 그런 다음 program.exe를 실행 한 후 (program.exe open)과 같은 다른 인수를 추가하면 프로그램에서 어떤 것이 열립니다. 사용자 (이 경우 개방되는 1) 입력은 Program.exe 1이라면명령 인수를 통해 기능을 수행하는 함수 열기

if (argc >= 5){ 
    if (int(argv[1]) == 1){ 
     function1(); 
     function2(); 
     function3(); 

    } 

} 

기본적이 경우, 다음과 같은 기능을 수행한다. 왜 이것이 논리적으로 부정확합니까? int1문자열"1"을 변환하지 않습니다

+0

'은 Program.exe이 1' 물론> = 5' ... –

답변

0

int(argv[1]) 때문에 (표시 아무것도 없기 때문에). 대신이 시도 :

if (argv[1][0] == '1') { 
+0

이 변수는 argv [1]로 발생하는 경우는 argc "10"이 수도'발생하지 않을 것이다 : 당신은 atoi()이 사용할 수 무엇이 필요한지하지 말라. – doctorlove

2

당신이 필요로하는 것은 이것이다 : ARGV의

if (argc >= 2){ // the argc is count of supplied argument 
       // including executable name 
    if ((argv[1][0]-'0') == 1){ 
     //argv[1] will be "1" 
     //so take first character using argv[1][0]--> gives '1'-->49 
     //substract ASCII value of 0 i.e. 48 
     //Note: - This will only work for 0-9 as supplied argument 
     function1(); 
     function2(); 
     function3(); 

    } 

} 
+0

실제로 확장 성이 뛰어나다. (이 값은 9보다 큰 입력 값에서 깨질 것이다.) ... –

1

전환을 [1] 작동하지 않습니다 int로. 처음에는

if (argc >= 2){ 
    if (atoi(argv[1]) == 1){ 
     function1(); 
     function2(); 
     function3(); 
    } 
} 
+0

이것은 모든 cout <<을 출력한다. 그러나 함수를 사용하려고하면 아무 것도 표시되지 않습니다. 하나의 함수는 파일을 열고 다른 하나는 다른 파일을 연 다음 그 함수의 끝에 내가 그 텍스트를 가지고 있습니다. if argv 문에서 함수를 호출 할 때 텍스트가 없습니다. –

+0

argc와 2를 비교하기 위해 내 대답을 편집했습니다. 프로그램을 다음과 같이 호출하면 : program.exe 1, argc는 2가 될 것입니다. –

관련 문제