2013-05-04 7 views
1

어제 커맨드 라인을 통해 전달 된 인수를 사용하는 간단한 프로그램을 C++로 만들었습니다.명령 줄 인수를 처리하는 방법?

E.G. myDrive:\myPath\myProgram.exe firstWord secondWord 

프로그램 실행 벌금과가있다,하지만 난이 조금 호기심이 무엇을 수행 내가 그렇지 않으면 내가 런타임 충돌이, 내가 잘 사용하기 전에 argc --;를 작성했다 [컴파일러 말하지 않을 것이다!]. 특히 argc에서

때문에 전혀 나쁜, 지금은 작동 나에게 내가 그것을 실행 프로그램에 대한 인수로 단어를주지 않는다 나쁜 시간 ...

을 제공하지만, I 이것이 왜 일어나고 있는지 궁금해! [P.S. argc --; 제작과 인쇄, 그것은 값으로 0을 제공]

편집 :! 여기 뿐만 아니라 프로그램 자체의 이름을 포함 argc

int main(int argc, char *argv[]) { 
    [...] 
    argc --; 
    if(argc > 0){ 
     if(firstArg.find_last_of(".txt") != string::npos){ 
      reading.open(argv[1], ios::binary); 
      [...] 
     } 
    } 
    if ((!(firstArg.find_last_of(".txt") != string::npos)) && argc > 0){ 
    [...] 
     for(int i = 1; i <= argc; i ++){ 
     [...] 
     toTranslate = argv[i][j]; 
     [...] 
     toTranslate = argv[i][j]; 
     } 
    } 
} 
+0

당신은 문제를 보여줍니다 몇 가지 코드를 보여줄 수 있습니까? –

+0

'i <= argc'와 같은 것을 작성 했으리라 확신합니다. 우리에게 코드를 보여주세요. – Nawaz

+0

나는 대답을 편집하고 잠시만 기다려주세요! – ingroxd

답변

5

인수를 사용하는 모든 istructions, 그래서 argc

int main(int argc, char * argv[]) 
{ 
    for (int i = 0; i != argc; ++i) 
    { 
     std::cout << "Argument #" << i << ": " << argv[i] << "\n"; 
    } 
} 
: 여기에 적어도 1

항상 전형적인 루프 것입니다

또는 당신 거꾸로 인쇄 할 수 있습니다

while (argc--) 
{ 
    std::cout << argv[argc] << "\n"; 
} 
+0

그래,하지만 만약 내가 argc를'cout << argc'와 함께 인쇄하려해도 probram은 망가진다. 그리고 내가 그것을 빼기 만하면 충돌이 일어난다! – ingroxd

+0

@IngrossoD : 게시 된 코드에서'i <= argc' 대신'i Nawaz

+0

@Nawaz : for 루프 전에 충돌이 발생합니다! 나는 당신이 말한대로 시작했습니다! – ingroxd

관련 문제