最近需要在文件原位置修改内容,该方法主要用于较少的文件内容,同时修改之后的内容和修改之前的格式一致,较适用于配置文件的原位置修改。
下面是范例代码:
#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()用法
参考
2、主要中文乱码问题,方法之一,修改文件的编码集
原位修改文件内容的C语言实现
这篇博客介绍了如何使用C语言在原文件位置修改内容,特别是针对配置文件的修改。通过创建临时文件,利用ftell()和fseek()函数进行文件定位,实现了在不破坏原有文件格式的情况下修改特定内容。同时,文中提到了解决中文乱码问题的一种方法,即更改文件编码。

被折叠的 条评论
为什么被折叠?



