【发布时间】:2010-11-01 12:26:48
【问题描述】:
我无法从文件中读取数据,并将数据(文本)的选定部分连接到我自己的缓冲区中。
代码如下:
char buffer[1000];
char* allNewData = (char *)malloc(10000);
while (! myfile.eof() )
{
myfile.getline (buffer, 1000);
pch = strstr (buffer,"bla bla");
if(pch == NULL)
{
char* temp = buffer;
strcat(allNewData, temp);
strcat(allNewData, "\n");
}
else
{
strcat(allNewData, "here's bla bla");
strcat(allNewData, "\n");
}
}
cout<<allNewData<<endl;
当我运行程序时,allNewData 首先有一些垃圾文本,然后是正确/预期的结果,如下所示:
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii <-rubbish data
hello <- actual data
我需要摆脱这些垃圾数据,我该如何更改代码来实现呢?
【问题讨论】:
-
不要含糊,做个王牌;写一个合适的测试用例! tinyurl.com/so-hintssscce.orgxs4all.nl/~weegen/eelis/iso-c++/testcase.xhtml
-
不要使用!eof()。
-
这里也应该使用
vector而不是malloc。 -
这是丑陋的 C++!而且您可能没有检查文件是否正确打开:
isftream myfile("somefile.txt"); if( !myfile ) cerr << "Error opening file!" << endl;