系统相关
首页 > 系统相关> > linux系统编程之小应用修改配置文件

linux系统编程之小应用修改配置文件

作者:互联网

修改配置文件

目的:修改配置文件里的数据
思路:
1.打开目标文件
2.把目标文件内容读取到缓存中
3.查找字符串(strstr)
4.找到之后指针向字符串的末尾的下一个偏移
5.修改当前的字符的值
6.把修改好的缓存内容写回目标文件
7.关闭目标文件

1.配置文件的数据
新建file文件把里面“WRITE=”后面的9改为6

LENG=5
SBEEK=7
WRITE=9
READ=3

2.实现代码

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
        int fd;

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

        fd = open(argv[1], O_RDWR);//打开目标文件

        if(fd == -1)
        {
                printf("open object file failed\n");
                exit(-1);
        }

        int size = lseek(fd, 0, SEEK_END);

        lseek(fd, 0, SEEK_SET);

        char *readBuf = (char *)malloc(sizeof(char)*size);

        int n_read = read(fd, readBuf, size);//把目标文件内容读取到缓存中 

        if(n_read == -1)
        {
                printf("read error\n");
                exit(-1);
        }

        char *p = strstr(readBuf, "WRITE=");//查找字符串

        p = p + 6;//找到之后指针向字符串的末尾的下一个偏移

        *p = '6';//修改当前的字符的值

        lseek(fd, 0, SEEK_SET);

        int n_write = write(fd, readBuf, strlen(readBuf));//把修改好的缓存内容写回目标文件

        if(n_write == -1)
        {
                printf("write error\n");
                exit(-1);
        }
        else
        {
                printf("modify the file success\n");
        }

		close(fd);//关闭目标文件
		
        return 0;
}

标签:printf,配置文件,int,编程,char,fd,linux,readBuf,include
来源: https://blog.csdn.net/qq_48850403/article/details/112061050