在文件原位置修改文件内容

最近需要在文件原位置修改内容,该方法主要用于较少的文件内容,同时修改之后的内容和修改之前的格式一致,较适用于配置文件的原位置修改。

下面是范例代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
FILE* fp, *p;
long flen = 0,m = 20;
char i[128]="VALUE";
char i1[128];
char n[128] = "替换之后的内容";
fp = fopen("card.txt", "r+"); //该文件在当前cpp文件同级目录下
//scanf("%d", &i);
while (!feof(fp)) {
//所获取的内容为中文,需将文件的编码类型改成ANSI,就可避免乱码
fscanf(fp, "%s = %d", i1,&m);
if (strcmp(i,i1)==0) {
p = fopen("1.txt", "w");
fprintf_s(p, "%s = %d", i, m);
flen = ftell(p);
fclose(p);
m = 90;
fseek(fp, -flen, 1); //表示从当前位置向前偏移flen个字符,fp指向该偏移
fprintf(fp, "%s = %d\n", i, m);
break;
}
}
fclose(fp);
return 0;
}
//将文件原内容 “VALUE = 10” 改成"VALUE = 90"

主要几点:

1、将要修改的内容临时写到另一个临时文件中,获取文件中内容的长度;

2、将原文件进行重定位使用fseek函数;

3、使用fprintf将更新的内容写到原位置

小tips:

1、了解ftell(),fseek()用法

参考

fseek——解析1_jinlunyue的博客-CSDN博客

2、主要中文乱码问题,方法之一,修改文件的编码集
————————————————
版权声明:本文为CSDN博主「hellocode_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hellocode_/article/details/127858814

posted @ 2022-11-15 08:36  交响曲  阅读(152)  评论(0编辑  收藏  举报