Linux文件操作——修改配置文件(应用)

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

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

#include<string.h>

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 <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

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;
}

6770958a815945dd9a23ecc90ba60c21.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值