c语言修改文件内容处理思路,没有shell或者python那么方便
- 1.打开原文件和临时备份文件
- 2.从原文件中读取一行,写入临时文件中
- 3.如果是需要修改的地方,在内存中解析修改后写入临时文件
- 4.修改完成,删除原文件
- 5.重命名临时文件为原文件
下面代码实现修改a.cfg中一行中的一个或者多个内容,当然,每个人处理的文件不同,需求也不同,但总的思路一致。
区别和修改最多的也就是字符串处理的地方
部分代码
代码中部分变量未展示定义部分
.
编码注意: 尽量不要出现魔鬼数字
指针非空判断,NULL在等号前(变量和常量比较类似,变量在前)
打开的文件句柄在返回前一定记得释放
fp = fopen(szFileName, "r+"); /* r+打开原文件, 不存在返回NULL */
if(NULL == fp)
{
printf("File does not exist.\n");
return -1;
}
fpBak = fopen(szFileNameBak, "w+"); /* 若文件存在,则清空文件,如果文件不存在,创建 */
if(NULL == fpBak)
{
fclose(fp);
return -1;
}
逐行读取一行,直到文件尾
while(!feof(fp))
{
bzero(szFileLine, MY_STRING_LEN_1024);
if (NULL == fgets(szFileLine, MY_STRING_LEN_1024, fp))
{
continue; /* 如果获取失败,结束本次循环 */
}
if(0 == strncmp(szFileLine, “RtDirName“, sizeof(RtDirName) - 1))
{
/* 找到指定部分,写入备份文件 */
if(-1 == fprintf(fpBak, "%s", szFileLine))
{
fclose(fp);
fclose(fpBak);
unlink(szFileNameBak);
return -1;
}
continue;
}
...
....../* 其他类型需求处理 */
}