2、从原文件读取一行,写入临时文件中,在临时文件读取写入文件长度。
3、将原文件指针向前移动返回的文件长度。
4、将要修改的文件内容写入原文件部分代码,写入文件时,需要给前面一行留空,使文件指针可以移动。
三种方法:(1)将文件中数据读入内存中,修改后,清空源文件,存入新数据。
(2)以读写的方式打开文件,将文件指针移动到要修改的地方,写入新数据。新数据将会覆盖掉旧数据。
(3)以读写的方式打开文件,将文件指针定位到需要修改数据的末尾,然后删除需要修改的数据(通过循环n次执行fputc(8,fp),直到清空需要修改的数据为止.
8为退格键对应的ascii)。
然后计算需要加入的新数据长度,通过fputc(32,fp)来添加空格到文件中(32为空格键的ascii).
然后根据指针位置,填入数据覆盖掉这些空格。
第一种方法适合数据量较小的情况,
后两种情况适合数据量较大的情况,但程序写起来麻烦,如果用心写代码,也用不了多久。呵呵。
#include<stdio.h>
#include<stdlib.h>//文件操作函数头文件
struct st{//定义一个结构体
char a[11]//301
char b[11]//01
char c[29]//xiaoming
char d[9]//m1
}
int main()
{
FILE *fp//文件指针
fp=fopen("D:\\123.txt","r+")//用fopen函数打开D盘下,名为123.txt的文件;
struct st s={"301","01","xiaoming","m"}//各成员的初值
scanf("%s%s",s.c,s.d)//输入之后会把原有的信息覆盖掉;
fprintf(fp,"%s %s %s",s.a,s.b,s.c,s.d)//用fprintf函数将固定格式的数据写入文件;
printf("%s %s %s %s",s.a,s.b,s.c,s.d)
fclose(fp)
return 0
/*这样就可以修改文件内容了,之前没仔细看,没看到是文件操作*/
}