当前位置:   article > 正文

Linux文件操作的C库函数(read,write,lseek)_c库read write属于哪个包

c库read write属于哪个包

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:读取结束
  1. %%拷贝english.txt到一个新文件中
  2. #include <stdio.h>
  3. #include <unist.h>
  4. #include <stdlib.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <string>
  8. #include <fcntl.h>
  9. int main(int argc, const char* argv[])
  10. {
  11. //打开一个文件
  12. int fd=open("english.txt",O_RDWR);//english.txt保存在main.c同一个文件夹
  13. printf("fd = %d\n", fd);
  14. //打开另一个文件,写操作
  15. int fd1 =open("temp.txt",O_WRONLY | O_CREAT, 0664);//若没有temp.txt文件,会new一个,权限为0664
  16. printf("fd1 = %d\n", fd1);
  17. //fd读取数据
  18. char* buf[4096];//设置4K个字节的缓冲区
  19. int len = read(fd,buf,sizeof(buf));
  20. while(len>0){
  21. //写入数据
  22. int ret = write(fd2,buf, len);
  23. printf("ret = %d\n",ret);
  24. //继续读取下一块的数据
  25. len = read(fd,buf,sizeof(buf));
  26. }
  27. close(fd);
  28. close(fd1);
  29. return 0;
  30. }

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);

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/256381
推荐阅读
相关标签
  

闽ICP备14008679号