2009-06-03 79 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