系统相关
首页 > 系统相关> > Linux系统编程——文件编程(五)修改配置文件

Linux系统编程——文件编程(五)修改配置文件

作者:互联网

修改配置文件主要运用了对文件的打开和读写的API,同时还用到了一个字符串查找函数(strstr)

strstr函数

头文件

#include <string.h>

函数原型

char *strstr(const char *haystack, const char *needle);

haystack:表示被查找的目标范围
needle:表示要查找的对象

返回值

当在haystack中查找到字符串needle时,函数返回needle在haystack中第一次出现的首地址
对于strlen函数可以参考字符串函数

修改配置文件代码实现

#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* Buf = NULL;          //存放读取出来的字符串
    if(argc != 2){             //需要两个参数
   		printf("error\n");
    	exit(-1);
    }
    fdSrc = open(argv[1],O_RDWR);              //打开要修改的文件
    int size = lseek(fdSrc,0,SEEK_END);        //计算文件的大小
    lseek(fdSrc,0,SEEK_SET);                   //将光标移动到文件开始位置
    Buf = (char *)malloc(sizeof(char) * size); //为缓冲区开辟空间,大小为一个char的大小x 文件大小
    int n_read = read(fdSrc,Buf,size);         //将文件读到buf中
    char *p = strstr(Buf,"LENG = ");           //在buf中寻找LENG=字符串
    if(p == NULL){                             //判断是否找到
    	printf("NO “LENG = ”\n");
        exit(-1);
    }
    p = p + strlen("LENG = "); //如果找到了strstr函数返回的是第一次出现LENG=的地址,将地址移动到LENG=的后面
    *p = '6';                  //现在P指向的地址已经到LENG = 的最后,在将P的内容修改为'6',注意是'6'
    lseek(fdSrc,0,SEEK_SET);  //将光标移动到最前面,因为上面读已经将光标移动到最后面了,如果不移动光标的话会重新打印一遍文件内容
    int n_write = write(fdSrc,Buf,strlen(Buf));  //将修改了的文件重新写入到原文件中
    close(fdSrc);                                //关闭文件
    return 0;
}

编译运行
在这里插入图片描述
fileModi文件就是要修改的文件,fileModi文件中原参数为
在这里插入图片描述
当运行上面程序后fileModi文件的参数变化
在这里插入图片描述
这样就对配置文件进行了修改

如果没有用lseek函数将光标重新定位到文件开始位置的话,会重行写入一遍
在这里插入图片描述

标签:文件,LENG,fdSrc,配置文件,编程,char,Linux,include,Buf
来源: https://blog.csdn.net/qq_48458789/article/details/116402718