编程思路:
利用main参数(main参数的简解)
- 打开要修改的文件
- 将要修改文件的内容读到 buf
- 利用字符串API之strstr( ) 找到要修改的子串的位置,修改内容
- 将修改后的buf写回源文件
- close关闭文件
#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;
char *readbuf;
if(argc != 2){
printf("parameter error\n");
exit(-1);
}
fdSrc = open(argv[1],O_RDWR); //1.打开要修改的文件
int size = lseek(fdSrc,0,SEEK_END); //利用lseek返回值计算文件的大小
lseek(fdSrc,0,SEEK_SET);
readbuf = (char *)malloc(sizeof(char)*size + 8);
read(fdSrc,readbuf,size); //2.将要修改文件的内容读到 readbuf
char *p = strstr(readbuf,"LENG="); //3.利用字符串API之strstr( ) 找到要修改的子串的位置,返回的是子串的 L 的地址
p = p + strlen("LENG="); //指针偏移到 = 号后一位
*p = '0'; //取出= 号后一位的内容改为数字0,但是写进文件的时候必须是字符。
lseek(fdSrc,0,SEEK_SET); //防止文件从光标后面添加
write(fdSrc,readbuf,strlen(readbuf)); //4.将修改后的buf写回源文件
close(fdSrc); //5.关闭文件
return 0;
}
文件未修改前:
文件修改后: