Linux系统编程—文件—修改程序的配置文件

该博客介绍了如何使用C语言中的strstr函数定位并修改配置文件中的特定字段,例如将LENG=3改为LENG=5。通过打开文件、读取内容、查找目标字符串、替换内容,然后覆盖写回文件,实现了配置文件的更新。
摘要由CSDN通过智能技术生成

修改程序的配置文件

场景:一配置文件有如下内容,需将LENG =3改成LENG = 5

SPEED=3
LENG=3
SCORE=9
LEVEL=0

程序思路:
1.找到文件头的位置
2.往后移,用地址++的方式找到需要更改的位置
3.修改文件内容

找需要更改的位置可用strstr函数
函数名: strstr
  功 能: 在串中查找指定字符串的第一次出现
  用 法: char *strstr(char *str1, char *str2);
  strstr原型:extern char *strstr(char *haystack, char needle);
  用法:#include <string.h>
  功能:从字符串haystack中寻找needle第一次出现的位置。
  说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
  
strstr函数找到目标文本后,用p=p+strlen(“LENG=”)使光标移到需要修改的位置。再用
p='5’这句函数,指针取内容,替换为5。

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
        int  fdsrc;
        char *readbuf=NULL;

        if(argc!=2){
                printf("param error\ni");
                exit(-1);
        }

        fdsrc=open(argv[1],O_RDWR);

        int size=lseek(fdsrc,0,SEEK_END);
        lseek(fdsrc,0,SEEK_SET);

        readbuf=(char *)malloc(sizeof(size)+8);
        int n_read=read(fdsrc,readbuf,size);

        char *p=strstr(readbuf,"LENG=");

        if(p==NULL){
                printf("not found\n");
                exit(-1);
        }

        p=p+strlen("LENG=");
        *p='5';

        lseek(fdsrc,0,SEEK_SET);
        int n_write=write(fdsrc,readbuf,strlen(readbuf));

        close(fdsrc);
        return 0;
}

注意:把buf缓存的内容写到配置文件里之前,需要 lseek(fdsrc,0,SEEK_SET)把光标移到文件头,这样就可以覆盖写入。最后gcc编译运行,可以看到配置文件里3已结成功改成5了。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是光哥呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值