Linux文件系统编程之修改配置文件
假如我们有如下一份简单的配置文件,现在我们通过文件编程来修改对应的内容,代码中关于main函数参数问题参考以下博文
SPEED=3
LENG=9
SCORE=9
LEVEL=5
程序大致思路:
1.我们首先打开需要修改的配置文件
2.找到需要修改的内容(本文修改的内容为LENG的数据)
3.对内容进行修改
4.将修改后的内容写入到配置文件
5.关闭文件
完整代码
#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;
int size;
char *readBuf = NULL;
char *p = NULL;
char *str = "LENG=";
char data = '5';
//当运行程序时不是两个参数,程序退出
if(argc != 2){
printf("参数错误\n");
exit(-1);
}
//打开配置文件(可执行文件为第一个参数,配置文件第二个参数)
fd = open(argv[1],O_RDWR);
//计算文件的大小
size = lseek(fd,0,SEEK_END);
//将光标重新移到开头位置
lseek(fd,0,SEEK_SET);
//为读取缓存开辟空间
readBuf = (char *)malloc(sizeof(char)*size + 8);
//读取文件内容
read(fd,readBuf,size);
//查找要修改的字符串(strstr函数返回值为指向字符串开头的指针)
p = strstr(readBuf,str);
if(p == NULL){
printf("没有找到该字符串\n");
exit(-1);
}
//指针偏移到要修改的位置前方
p = p + strlen(str);
//修改其中的内容
*p = data;
//光标移回文件初始位置
lseek(fd,0,SEEK_SET);
//将修改后的文件重新写入配置文件
write(fd,readBuf,strlen(readBuf));
//关闭文件
close(fd);
return 0;
}
总结
本文只是对Linux文件系统编程的小练习,如有错误之处,欢迎批评指正。