当前位置: 技术问答>linux和unix
文件I/O操作的问题
来源: 互联网 发布时间:2016-03-16
本文导语: 我需要对一个配置文件中的变量进行修改,我是一行一行读的,读到那个变量的话,对等号后面的值进行修改 但是,如果我修改的直超过以前直的长度的话就会把文件下面的内容覆盖 比如: 修改前: a=aa b=bb c=cc 修改后:修改a...
我需要对一个配置文件中的变量进行修改,我是一行一行读的,读到那个变量的话,对等号后面的值进行修改
但是,如果我修改的直超过以前直的长度的话就会把文件下面的内容覆盖
比如:
修改前:
a=aa
b=bb
c=cc
修改后:修改a的直为aaa
a=aaa=bb
c=cc
不知道大家遇到过这个问题没有,应该如何解决阿?
代码大致如下:
long int a;
char *buffer;
fwrite = fopen("a.conf", "r+");
if ( fwrite == NULL)
{
fprintf(stderr," Cannot open writing file %sn", a.conf);
return (-1);
}
while (fgets(buffer, 128, fwrite))
{
if (strncmp(buffer, "DefaultURL=", 11) == 0)
{
a = ftell(fwrite) - strlen(buffer1);
fseek(fwrite, a+11, SEEK_SET);
fputs("wangffffffffffffffffffff", fwrite);
printf("url is %sn", buffer1);
break;
}
}
fclose(fwrite);
但是,如果我修改的直超过以前直的长度的话就会把文件下面的内容覆盖
比如:
修改前:
a=aa
b=bb
c=cc
修改后:修改a的直为aaa
a=aaa=bb
c=cc
不知道大家遇到过这个问题没有,应该如何解决阿?
代码大致如下:
long int a;
char *buffer;
fwrite = fopen("a.conf", "r+");
if ( fwrite == NULL)
{
fprintf(stderr," Cannot open writing file %sn", a.conf);
return (-1);
}
while (fgets(buffer, 128, fwrite))
{
if (strncmp(buffer, "DefaultURL=", 11) == 0)
{
a = ftell(fwrite) - strlen(buffer1);
fseek(fwrite, a+11, SEEK_SET);
fputs("wangffffffffffffffffffff", fwrite);
printf("url is %sn", buffer1);
break;
}
}
fclose(fwrite);
|
只不过重复了一下我的解释,楼主就能理解了?看来我的表达能力越来越弱了
临时文件是空的,需要逐行复制旧的内容
或者在内存里保存配置参数,然后再格式输出到文件
|
按照行读入,按照行写回!
一般读配置(文本)文件使用文本文件的读写方式,
读写数据文件使用你上面的方式!
一般读配置(文本)文件使用文本文件的读写方式,
读写数据文件使用你上面的方式!