读书人

文件操作怎么修改部分内容

发布时间: 2012-09-08 10:48:07 作者: rapoo

文件操作,如何修改部分内容
比如文件原来为:(二进制文件)

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

现在要修改为:

0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

不重写文件,只修改其中一部分,如何操作?


[解决办法]
在数据量不变的情况下, 可以直接修改文件指针中的数据, 关闭文件时会更新上去。

但是如果你要删除一部分,就要向操作数组那样 操作文件指针把后面的数据全部前移。。
如果你要是加一部分, 如果是只在开头加入, 貌似 fseek 和 以"ab"的方式打开能够完成任务

但是如果你实在中间加一部分, 就要把后面的数据全体后移。。

其操作起来 还不如重写一份容易。。


[解决办法]
定位,然后写数据,基本操作
[解决办法]
fopen->fseek->fwrite 覆盖之
[解决办法]
int fseek(FILE *stream, long offset, int fromwhere);
第一个参数file指针
第二个参数移动的偏移量
第三个参数移动到哪里
分别用3个宏
SEEK_SET 既0 文件开头
SEEK_CUR 既1 文件当前位置
SEEK_END 既2 文件结尾
但不推荐用数字 最好用宏

简言之:
fseek(fp,100L,SEEK_SET);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,SEEK_CUR);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,SEEK_END);把fp指针退回到离文件结尾100字节处。
此函数常用来计算流的长度:
int filesize = fseek( fp, 0, SEEK_END );
fseek( fp, 0, SEEK_SET );

读书人网 >C++

热点推荐