写文件
当我用
fp = fopen( "data.txt ", "w ");时,会把文件的内容全部清空,然后向文件中写入。
fp = fopen( "data.txt ", "a ");时,会把要写入的内容追加到已有的内容后面。
但是标准C库的文件操作中没有提供随机写文件这个操作(随机写入后,插入点以后的内容在文件中的地址改变了,也即在硬盘中的地址也变了),如文件已有内容abcd,我想在ab与cd中插入ABCD,如果文件小的时候,如几K,可把文件的内容读出来,修改后重新写入文件,这时没什么关系。但假如文件有1G时(呵呵,夸张一点),如果都要读出来,修改后再写入,这好像太笨了。
那应该怎么对文件进行随机写操作呢?
[解决办法]
用 内存文件映射 吧
[解决办法]
文件中你重新写文件肯定会覆盖原来的文件该位置的数据的,不能说你想插入进去,然后后面的数据向后移动,这种随机的,其实你可以先写整个文件的大小,全部用空占满,每行站多少字符,你如果插入不多的话,就把这行重写就可以了。fseek可以指定文件的位置
[解决办法]
可以写位到想写文件的地方写,在这里也能写上去,但这里以前的内容全变成了不可识别的小方框,然后用程序读出来的并不是以前文件的内容。
你每次是写的整两个字节么?
[解决办法]
文件就是这么一种“顺序访问”容器,和数组是一个特点。
不要费力了。用数据库或者自己写文件系统。