Ram*_*ous 0 c++ ignore skip stream
我无法从文件中读取数据,并将数据(文本)的选定部分连接到我自己的缓冲区中.
代码如下:
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;
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,allNewData首先有一些垃圾文本,然后是正确/预期的结果,如下所示:
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii <-rubbish data
hello <- actual data
Run Code Online (Sandbox Code Playgroud)
我需要摆脱这些垃圾数据,如何更改代码来实现这一目标?
unw*_*ind 10
在使用字符串连接函数之前,需要清除新分配的缓冲区.他们期望一个有效的字符串,能够找到结束,从而找到连接的起点.
使用:
allNewData[0] = '\0';
Run Code Online (Sandbox Code Playgroud)
这使allNewData成为一个空字符串.在开始连接所有找到的数据之前,在循环之前执行此操作.
此外,当涉及到I/O和处理内存时,您的代码需要更好地处理各种"问题":