这下面的是代码,自己粘贴到易语言的程序集上
---------------------------------------------隔开一下,以免混乱----------------
.版本
2
.子程序
_按钮1_被单击,
,
,
点击之后替换文件
复制文件
(“这里写上你要拿来替换的文件的所在地址”,
“d:\新建文件夹\测试.dat(这里写上被替换的文件的地址)”)
如果只想修改文件一部分。
可以使用函数int
fseek(
FILE
*stream,
long
offset,
int
origin
);来定位你的文件指针。
文件指针的位置决定你读写文件的起始位置。
其中参数origin
:表示从哪里开始偏移,值有:
SEEK_SET:
文件开头
SEEK_CUR:
当前位置
SEEK_END:
文件结尾
参数offset:表示偏移的字节数,正数表示正向偏移,负数表示负向偏移。
比如
你先读取文件内容,同时做判断,找到你要改的内容时,调用函数
fseek(fp,10L,SEEK_CUR);把文件指针移动到离当前指针位置10个字节的地方(我们假设当前位置偏移10个字节就是你要修改的起始位置);
这样你之后的读写都是从这个位置开始。
不过要注意的是,你从这位置开始写新的内容,可以覆盖原内容,所以如果新的内容比你想覆盖的内容长的话,会把后面你想保留的内容也覆盖掉。
这种思路,你想要实现修改指定内容,还需要把修改内容之后的数据也读出来备份,再一起写进去。
所以最简单,还是直接生成新的文件替换原文件。
由于操作系统对文件操作做了封装,本来很容易的事情变得很难了。
修改文件最好的,最简单的方法,是新建一个文件,把修改部分前面的,先写入新文件,
然后写入修改的部分,再把后一部分没有修改的,写到新文件中去。然后文件重命名。
原文件改名备份文件,新文件改名原文件。
如果修改的数据很少N~100N
KB,N~10N
MB
可以用缓冲区处理好修改,再写入文件。
FILE×
fopen
fseek
fwrite
fclose
PS:
1)如果修改的内容,和原文件被修改的数据,字节数完全相同,直接找到要修改的地方,写入新内容就可以了。
2)如果修改后的内容,和原文件被修改的数据,字节数不同,建议新建一个文件,否则很麻烦,要用读写方式打开。
a)
如果修改后数据增加,把修改数据后的所有数据向后移动,给修改的数据腾地方。
b)
如果减少,要把所有数据前移,然后修改文件长度。