C++怎么缓存读写文件

FILE*fp_w=fopen("C:/aaa/mmm_1.dat","wb");if(NULL==fp_w)QMessageBox::information(NULL,... FILE *fp_w = fopen("C:/aaa/mmm_1.dat", "wb");
if (NULL == fp_w) QMessageBox::information(NULL, "write", "open err");
FILE *fp_r = fopen("C:/aaa/mmm.dat", "rb");
if (NULL == fp_r) QMessageBox::information(NULL, "read", "open err");
//逐像素寻找对应像素点信息
for (int ni = 0; ni <height; ni++) {
for (int nj = 0; nj < width; nj++) {

QRgb tt4;
fseek(fp_r, 4 * (ni*width+nj), SEEK_SET);
fread(&tt4, sizeof(QRgb), 1, fp_r);

fseek(fp_w, 4 * (ni*width + nj), SEEK_SET);
fwrite(&tt4, sizeof(QRgb), 1, fp_w);

}
}
fclose(fp_r);
fclose(fp_w);

如题,文件1里面存入了每个像素点的RGB信息二进制,文件二的每个像素点要通过计算寻找到1里面的对应位置(代码简写测试的,对应关系很复杂),但是这样效率很低,怎么才能提高效率, 注:不能行处理,因为每个像素都要计算。谢谢
展开
 我来答
风若远去何人留
2017-05-26 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450127
专业C/C++软件开发

向TA提问 私信TA
展开全部
可以先在内存中开一个buf
大小和你要写的文件大小相等
先将处理后的数据写入buf, 然后一次性写入文件。

如果文件过大,比如几百兆的话,可以开一个比较小的buffer,10MB或者100MB,看你电脑资源。
处理一部分,写入一部分。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式