首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

写文件,该怎么解决

2012-02-20 
写文件当我用fpfopen( data.txt ,w )时,会把文件的内容全部清空,然后向文件中写入。fpfopen( data.

写文件
当我用
fp   =   fopen( "data.txt ",   "w ");时,会把文件的内容全部清空,然后向文件中写入。
fp   =   fopen( "data.txt ",   "a ");时,会把要写入的内容追加到已有的内容后面。
但是标准C库的文件操作中没有提供随机写文件这个操作(随机写入后,插入点以后的内容在文件中的地址改变了,也即在硬盘中的地址也变了),如文件已有内容abcd,我想在ab与cd中插入ABCD,如果文件小的时候,如几K,可把文件的内容读出来,修改后重新写入文件,这时没什么关系。但假如文件有1G时(呵呵,夸张一点),如果都要读出来,修改后再写入,这好像太笨了。
那应该怎么对文件进行随机写操作呢?

[解决办法]
用 内存文件映射 吧
[解决办法]
文件中你重新写文件肯定会覆盖原来的文件该位置的数据的,不能说你想插入进去,然后后面的数据向后移动,这种随机的,其实你可以先写整个文件的大小,全部用空占满,每行站多少字符,你如果插入不多的话,就把这行重写就可以了。fseek可以指定文件的位置
[解决办法]
可以写位到想写文件的地方写,在这里也能写上去,但这里以前的内容全变成了不可识别的小方框,然后用程序读出来的并不是以前文件的内容。
你每次是写的整两个字节么?

[解决办法]
文件就是这么一种“顺序访问”容器,和数组是一个特点。
不要费力了。用数据库或者自己写文件系统。

热点排行