提前写好修改文件
TEST.config
1 PEED=3
2 LENG=3
3 SCORE=9
4 LEVEL=5
~
代码
#include <sys/types.h>
#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;
// int fdDes;
char *readBuf=NULL;
if(argc!=2)
{
printf("pararm error\n");
exit(-1);
}
fdSrc = open(argv[1],O_RDWR);//dakaixuyaoshougaide peizhiweijian
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);//读取数据到readBuf
char *p=strstr(readBuf,"LENG=");//找到字符位置
if(p==NULL){
printf("not found\n");//找不到返回
exit(-1);
}
p =p+strlen("LENG=");//移动光标地址
*p = '5';//修改字符
// fdDes = open(argv[2],O_RDWR|O_CREAT,0600);
lseek(fdSrc,0,SEEK_SET);//移动光标到文件头
int n_write = write(fdSrc,readBuf,strlen(readBuf));//重新写入更改后的数据
close(fdSrc);//关闭文件
// close(fdDes);
return 0;
}
编译运行
tianya@tianya-virtual-machine:~$ gcc demo5.c
tianya@tianya-virtual-machine:~$ ./a.out TEST.config
执行结果