Linux文件操作的C库函数(read,write,lseek)

    技术2022-07-17  98

    read_write函数

    1. read函数

    函数原型: ssize_t read(int fd, void *buf, size_t count); 参数: fd:文件描述符,open函数的返回值buf:缓冲区,存储要读取的数据count:缓冲区能存取的最大字节数  sizeof(buf)返回值: -1 :失败>0:读取的字节数=0:文件读完了

    2. write函数

    函数原型:ssize_t write(int fd, void *buf, size_t count);参数: fd:文件描述符,open函数的返回值buf:缓冲区,要写到文件的数据count:能存取的有效字节数 返回值: -1:失败>0:写入到文件的字节数=0:读取结束 %%拷贝english.txt到一个新文件中 #include <stdio.h> #include <unist.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <string> #include <fcntl.h> int main(int argc, const char* argv[]) { //打开一个文件 int fd=open("english.txt",O_RDWR);//english.txt保存在main.c同一个文件夹 printf("fd = %d\n", fd); //打开另一个文件,写操作 int fd1 =open("temp.txt",O_WRONLY | O_CREAT, 0664);//若没有temp.txt文件,会new一个,权限为0664; printf("fd1 = %d\n", fd1); //从fd读取数据 char* buf[4096];//设置4K个字节的缓冲区 int len = read(fd,buf,sizeof(buf)); while(len>0){ //写入数据 int ret = write(fd2,buf, len); printf("ret = %d\n",ret); //继续读取下一块的数据 len = read(fd,buf,sizeof(buf)); } close(fd); close(fd1); return 0; }

    lseek函数

    函数原型: off_t lseek(int fd, off_t offset, int whence)功能: 文件指针移动到头部: lseek(fd,0,SEEK_SET);获取文件指针当前的位置: int len = lseek(fd,0,SEEK_CUR);获取文件长度: int len = lseek(fd,0,SEEK_END);文件拓展: 1. 文件原大小100k,拓展到1100k:lseek(fd,1000,SEEK_END); 2. 需要做一个写操作:write(fd,"a",1);

     

     

     

     

     

     

    Processed: 0.009, SQL: 9