一.Linux操作系统提供了一系列api
1、打开 open
2、读写 write /read
3、光标定位 lseek
4、关闭 close
api的使用和详解
二.文件描述符
众所周知Linux底下一切皆文件。
文件描述符即open函数的返回值,一个进程打开文件需要文件描述符(open的返回值),内核就知道你open哪个文件,如何对它进行操作时就根据文件描述符操作那个文件。
三.操作简单文件修改
以下代码包含文件编程api的使用,运行时且带你想要操作的文件,
文件里面你想要修改的位置(例:./a.out test.txt)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
char *readBuf = NULL;//read读进readBuf里头存放数据
int fdSrc; //源文件描述符
if(argc != 2){ //argc参数传入
printf("pararm error\n");
exit(-1);
}
fdSrc = open(argv[1],O_RDWR); //打开源文件
int size = lseek(fdSrc,0,SEEK_END); //光标定位到文件尾端,计算文件字符数目
lseek(fdSrc,0,SEEK_SET); //光标重新到文件头部
readBuf = (char *)malloc(sizeof(char)*size + 8); //动态分配内存空间给readBuf
int n_read = read(fdSrc,readBuf,size); //数据读进readBuf
char *p = strstr(readBuf,"LENG="); //strstr找到要修改的位置
if(p==NULL){
printf("not found\n");
exit(-1);
}
p = p+strlen("LENG="); //p指向 = 后面
*p = '5'; //修改指针指向的值
lseek(fdSrc,0,SEEK_SET);
int n_write = write(fdSrc,readBuf,strlen(readBuf));//readBuf被修改后写入
close(fdSrc);
return 0;
}