2009-06-03 10 views
0

저는 처음에는 cmd를 사용하여 project \ debug 폴더에 들어가서 프로그램을 실행했을 때이 코드가 정상적으로 작동했습니다. 다음은 "디버그 선언이 실패한"저를주고 시작 (에서)과 다른 부분이라면 나는 추가 오류가디버그 어설 션 오류

표현들! = NULL

는 그냥 나에게 어떤 이해가되지 않습니다 mbstowcs.c ..

나는 cmd를이 명령을 사용 : prog.exe있는 test.txt nuther.txt

두 파일은 .. 디버그 폴더 및 주요 프로젝트 폴더 내부에 존재하는

어떤 아이디어가?

int main(int argc, char **argv) 
     { 
     parse_opts(argc, argv); //parse the arguments 

     return 0; 
    } 


    void parse_opts(int argc, char **argv) 
    { 
     string compl_out; 

     if(argc > 1) 
     { 
      for(int i = 1; i < argc; i++) 
      { 
       if(argv[i][0] = '>') 
       { 
        ofstream out_file(argv[i+1]); 
        out_file << compl_out; 
        out_file.close(); 
        break; 
       } 

       ifstream in(argv[i]); 
       string buff; 

       if(in) 
       { 
        while(getline(in, buff)) 
        cout << buff << endl; 

        compl_out.append(buff); 
       } 
       else 
       { 
        cout << "Can't open file: " << argv[i] 
          << ", file doesn't exist or is locked in use. " << endl; 
       } 
      } 
     } 
     else 
     { 
      usage(); 
     } 

} 

답변

2

첫인상 :

if(argv[i][0] = '>') 

가 있어야한다 :

if(argv[i][0] == '>') 

는 대신 비교하는 할당된다.

compl_out.append은 while 루프 내에 있다고 생각했을 수도 있습니다. 그대로는 그 버퍼에 anying를 추가하지 않습니다 내가 게시 한 후

while(getline(in, buff)) 
{ 
    cout << "buf" << buff << endl; 
    compl_out.append(buff); 
} 
+0

그래, 내가 바로 것을보고 .. LOL 김 실망이다 바보 같은 실수 .. –

+0

좋은 물건을 ... 이유를 확실하지 주장을하고있다. 내가 뭔가를 놓치지 않았다면, 나는 그 프로그램이 주어진 params를 벗어나기 만하면 끝날 것이라고 기대할 것입니다. 비록 당신이 "blah.exe>"를 통과했다면 그것은 outstream out_file (argv [i + 1])에서 충돌 할 수 있습니다; 선. – RedBlueThing

+1

일반적인 "속임수"는 오른쪽에 상수 표현을 쓰는 것입니다. 습관을 만들면 문제가 생길 수 있습니다. 예 : ('>'= arg [i] [0]) 컴파일러 오류를 줄 경우 if ('>'== arg [i] [0]) 괜찮습니다. –