BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #14758同步于 2008/10/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

直接操作文件缓冲区

erabbit
2008/10/27镜像同步9 回复
大家有没有试过直接操作文件缓冲区?就像这样: FILE *tempfile; char buf[1280]={0}; int i=0; tempfile=fopen("d:\\temp\\test.txt","wb"); setvbuf(tempfile,buf,_IOFBF,1280); for(i=0;i<1280;i++)buf[i]=i%256; fclose(tempfile); 用setvbuf可以为文件指定一个缓冲区,而不是用打开文件时系统分配的。我想直接操作文件缓冲区可以提高速度。 上面这段代码可以编译运行,但运行以后test.txt是空的(零字节)。 是不是这样,虽然自己向缓冲区写内容了,但操作系统没有收到对文件进行写操作的指令,不执行。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
erabbit机器人#1 · 2008/10/27
问题解决了,可以通过修改FILE结构体中的变量实现: int main(int argc,char *argv[]) { FILE *tempfile; char buf[1280]={0}; int i=0; for(i=0;i<1280;i++)buf[i]=i%256; tempfile=fopen("d:\\temp\\test.txt","wb"); setvbuf(tempfile,buf,_IOFBF,1280); tempfile->_cnt-=1024; tempfile->_ptr+=1024; fclose(tempfile); } 直接写文件缓冲区。 PS: IDE: Dev-C++ 4.9.9.2 不同平台FILE结构体的定义不一样。 【 在 erabbit 的大作中提到: 】 : 大家有没有试过直接操作文件缓冲区?就像这样: : FILE *tempfile; : char buf[1280]={0}; : ...................
purevirtual机器人#2 · 2008/10/27
学习了 【 在 erabbit (兔子|Tom) 的大作中提到: 】 : 问题解决了,可以通过修改FILE结构体中的变量实现: : int main(int argc,char *argv[]) : { : ...................
erabbit机器人#3 · 2008/10/27
windows中有一种内存映射文件机制,可以实现这样的功能。
wwwking机器人#4 · 2008/10/28
tempfile->_cnt-=1024; tempfile->_ptr+=1024; 弱问一下这两句是啥意思,为啥是1024啊
ys912机器人#5 · 2008/10/30
可否注释一下
ys912机器人#6 · 2008/10/30
【 在 erabbit 的大作中提到: 】 : 问题解决了,可以通过修改FILE结构体中的变量实现: : int main(int argc,char *argv[]) : { : ................... 运行结果杂是这样?  * !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆�����氨渤吹斗腹夯冀究懒旅呐魄壬仕掏蜗醒矣哉肿刭谯茌捱噌忏溴骁栝觌祉铒瘃蝮趱鲼��������  * !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆�����氨渤吹斗腹夯冀究懒旅呐魄壬仕掏蜗醒矣哉肿刭谯茌捱噌忏溴骁栝觌祉铒瘃蝮趱鲼��������  * !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆�����氨渤吹斗腹夯冀究懒旅呐魄壬仕掏蜗醒矣哉肿刭谯茌捱噌忏溴骁栝觌祉铒瘃蝮趱鲼��������  * !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆�����氨渤吹斗腹夯冀究懒旅呐魄壬仕掏蜗醒矣哉肿刭谯茌捱噌忏溴骁栝觌祉铒瘃蝮趱鲼��������
ericyosho机器人#7 · 2008/10/30
难道不应该是这样的么? 写入的都是ascii码,有些你认识,有些是text不可见的。 你用文本编辑器打开,必然是乱码撒……
ys912机器人#8 · 2008/10/30
【 在 wwwking 的大作中提到: 】 : tempfile->_cnt-=1024; : tempfile->_ptr+=1024; : 弱问一下这两句是啥意思,为啥是1024啊 有人注释下最后几句么? 还是有点看不懂
rebirthatsix机器人#9 · 2008/10/30
恩,windows下还是mapping强大