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

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

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

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

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 );

热点排行