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

该应用主要调用到strstr函数,我们只需调用该函数并传入相关文件和修改数值即可,下面就是对strstr函数的定义解读以及实现案例

1.调用strstr函数需要包含以下头文件

#include

2.函数定义格式

char *strstr(char *str1, const char *str2);//返回值为字符型指针

3.函数参数解读:

str1 被查找的目标:系统里的某个文件
str2 要查找的对象:文件里的某个数值

4.函数的功能
1、找到所搜索的字符串,则该函数返回第一次匹配的字符串的首地址
2、如果未找到所搜索的字符串,则返回NULL
5.实例

(1).原文件config内容

speed=5
leng=100
sorce=90
level=95

(2).代码展示

#include 
#include 
#include 
#include 
#include 
#include 

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

	char *readBuf = NULL;

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

	fdSrc = open(argv[1],O_RDWR);//打开传进来的文件config
	int size = lseek(fdSrc,0,SEEK_END);//运用光标计算文件字节数
    lseek(fdSrc,0,SEEK_SET);

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

	int n_read = read(fdSrc,readBuf,size);//将config中的内容存放在readBuf
	
	char *p = strstr(readBuf,"leng=50");//在readBuf中寻找leng=50
	if(p == NULL)
	{
		printf("not found\n");
		exit(-1);
	}
	p = p+strlen("leng=50");//p指向leng=50的下一个地址
	*p = '5';//修改地址数据
	//lseek(fdSrc,0,SEEK_SET);//每次修改后会在数据下面显示修改后的数据,需要让光标移到最前面,写入的时候才原来的数据才会消失,但我们为了给大家更好做对比,这里我们不把光标移到最前面,当然实际工作中修改数据后前面的数据应该消失
	int n_write = write(fdSrc,readBuf,strlen(readBuf));

	close(fdSrc);

	return 0;
}

Linux系统编程——修改配置文件(应用)_第1张图片

前面4行是原文件内容,后面4行是代码编译后的文件内容。由编译结果可知,将leng=50的下一位0修改成5,其结果为leng=505,实现了配置文件的修改

你可能感兴趣的:(linux)