2009-06-03 105 views
0

我一直在抓我的頭很長一段時間,這段代碼工作正常,當我第一次使用CMD進入項目\調試文件夾,然後在那裏運行程序。然後我說的,如果(在)和其他部分則開始給我「調試斷言失敗」錯誤mbstowcs.c調試斷言錯誤

表達式S!= NULL

它只是沒有任何意義,我..

我用CMD命令:prog.exe的test.txt nuther.txt

兩個文件存在debug文件夾和主項目文件夾內..

任何想法?

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循環中?由於它是它不會追加毛岸英到緩衝區:

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

是啊,我一眼就看出了我張貼後.. LOL像洙沮喪愚蠢的錯誤.. – 2009-06-03 23:56:04