目录

1.read函数简介:

1.包含的头文件

2.函数原型

3.函数参数说明:

4.write函数描述

5.函数返回值

2.代码demo:

1.为什么使用了read函数之后读取不到数据?(光标的问题)

2.用土方法解决光标问题读取数据,代码demo:


1.read函数简介:

1.包含的头文件

#include <unistd.h>

2.函数原型

ssize_t read(int fd, void *buf, size_t count);

3.函数参数说明:

  • int fd :文件描述符
  • const void *buf :一个无类型的指针buf,是一个缓冲区
  • size_t count:你要读取文件的大小

【整个函数的意思是:从 fd 指向的文件里面的数据,读取多少个字节数据到缓存区 buf 里面去。】

4.write函数描述

DESCRIPTION
       read() attempts to read up to count bytes from file descriptor fd into the buffer starting at buf.

If count is zero, read() returns zero and has no other results.  If count is greater than SSIZE_MAX, the result is unspecified.

read()尝试从文件描述符fd读取字节数到从buf开始的缓冲区中。如果count为0,则read()返回0并且没有其他结果。如果count大于SSIZE_MAX,则结果是未指定的

5.函数返回值

RETURN VALUE
       On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number.  It is not an error if this number is smaller than the number of bytes requested; this may happen for example because  fewer  bytes  are actually  available  right  now (maybe because we were close to end-of-file, or because we are reading from a pipe, or from a termi‐nal), or because read() was interrupted by a signal.  On error, -1 is returned, and errno is set appropriately.  In this case it  is left unspecified whether the file position (if any) changes.

如果成功,将返回读取的字节数(0表示文件结束),并且文件位置将以这个数字向前推进。如果这个数字小于请求的字节数,则不会报错;例如,这可能是因为现在实际可用的字节数更少(可能因为我们接近文件结束符,或者因为我们正在从管道读取数据)。或者由于read()被一个信号中断。出现错误时,返回-1,并适当设置ermo。如果文件的位置发生了变化,它是不指定的。

2.代码demo:

#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 fd;char *buf = "wenjian chu ru men !";fd = open("./file1",O_RDWR);        //打开文件if(fd == -1){printf("open file1 fail \n");fd = open("./file1",O_RDWR|O_CREAT,0600);        //如果没有文件,创建文件if(fd > 0){printf("creat file1 success \n");}}printf("open file1 success: fd = %d \n",fd);//write函数原型:ssize_t write(int fd, const void *buf, size_t count);int n_write =  write(fd,buf,strlen(buf));printf("write %d byte to file1 \n",n_write);char *readbuf;readbuf = (char *)malloc(strlen(buf)+1);//read函数原型:ssize_t read(int fd, void *buf, size_t count);int n_read = read(fd,readbuf,n_write);printf("read %d byte,context:%s\n",n_read,readbuf);close(fd);return 0;
}

1.为什么使用了read函数之后读取不到数据?(光标的问题)

因为:在我们write写操作之后,光标已经移动到了数据最末尾的位置,(就像你用word文档敲完一句话之后,那个光标总是停留在最后的位置),这里是同样的道理。所以当我们read读操作的时候,总是在末尾读数据,单数尾巴没有数据,所以啥也读不到。

有两种解决办法:

  1. 将光标移到头,在读取数据。
  2. 关闭文件,重新打开再读取。【这方法比较土,基本不用】

2.用土方法解决光标问题读取数据,代码demo:

关闭文件,重新打开再读取。【这方法比较土,基本不用】

#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 fd;char *buf = "wenjian chu ru men !";fd = open("./file1",O_RDWR);            //打开文件if(fd == -1){printf("open file1 fail \n");fd = open("./file1",O_RDWR|O_CREAT,0600);        //如果没有文件,创建文件if(fd > 0){printf("creat file1 success \n");}}printf("open file1 success: fd = %d \n",fd);//write函数原型:ssize_t write(int fd, const void *buf, size_t count);int n_write =  write(fd,buf,strlen(buf));printf("write %d byte to file1 \n",n_write);close(fd);                        //关闭文件fd = open("./file1",O_RDWR);      //打开文件,这两步解决write写操作光标移动到末尾的问题(土方法,不常用)char *readbuf;readbuf = (char *)malloc(strlen(buf)+1);//read函数原型:ssize_t read(int fd, void *buf, size_t count);int n_read = read(fd,readbuf,n_write);printf("read %d byte,context:%s\n",n_read,readbuf);close(fd);return 0;
}

4.文件读取操作_read函数相关推荐

  1. python简述文件的操作步骤_Python文件读取操作的详细介绍

    本篇文章给大家带来的内容是关于Python文件读取操作的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 读取文件的操作步骤 有一道脑筋急转弯,问把大象装进冰箱的步骤,答案很简 ...

  2. python文件读取操作练习题(统计单词)

    python文件读取操作练习题(统计单词) 学习路线:python的文件读取基础入门(read(),readlines(),with.open()) ->python文件读取操作练习题(统计单词 ...

  3. C语言文件读写操作主要函数及其用例

    C语言把磁盘文件看成是字符(或字节)的序列,按照存储信息的形式来说,文件主要是有文本文件和二进制文件.文本文件由一个个字符组成,每个字节存放一个ASCII码制,代表一个字符.二进制文件把内存中的数据按 ...

  4. C语言和C++的文件读取、写入函数

    文件的输入输出函数 键盘.显示器.打印机.磁盘驱动器等逻辑设备, 其输入输出都可以通过文件管理的方法来完成.而在编程时使用最多的要算是磁盘文件, 因此本节主要以磁盘文件为主, 详细介绍C语言.C++提 ...

  5. C语言中文件读写方式r 的作用,C语言文件读写操作主要函数及其用例

    C语言把磁盘文件看成是字符(或字节)的序列,按照存储信息的形式来说,文件主要是有文本文件和二进制文件.文本文件由一个个字符组成,每个字节存放一个ASCII码制,代表一个字符.二进制文件把内存中的数据按 ...

  6. python中文件读取操作及注意事项

    我们想要读一些文件,那么可以使用read()函数.readline()函数.或者readlines()函数. 其中read()函数可以一次性读取文件中所有的内容,也可以设置read(100),也就是一 ...

  7. Python对spss类型的sav文件读取操作

    一.安装库 python要对sav类型文件进行操作,需要安装savReaderWriter模块 savReaderWriter模块下载链接 下载后解压进入文件夹 在地址栏输入cmd 输入命令进行安装 ...

  8. Linux对文件读取操作读取不到内容的解决方案(一)

    Linux下对文件的读取操作 linux下对文件的读取操作,像下面这样会读取不到内容,原因就是光标已经到内容的最后,再进行读取就会读不到内容. 运行结果如图所示: 代码如下: #include< ...

  9. 四十二、深入Java中的文件读取操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  10. Linux文件读取操作:read函数的使用

    read函数作用:读取文件内容,读取打开/创建(open)文件中写入(write)的内容. 包含的头文件: #include <unistd.h> 函数原型: ssize_t read(i ...

最新文章

  1. linux里进程监控和自动重启,Linux - linux进程监控和自动重启的简单实现
  2. 计算机上能玩vr游戏吗,VR设备是什么? 听说可以用来玩电脑游戏的?
  3. php 分页类视频,php分页类_你不可错过的一个php分页类
  4. 火出边际的Serverless,你居然还不了解?
  5. python读取json文件多个json数据_Python 加载包含多个JSON对象的JSON文件
  6. 【重磅分享】从零到一搭建推荐系统指南白皮书.pdf(附48页下载链接)
  7. python 多线程 异步_python 多线程异步
  8. java 字符串 数字个数_JAVA 统计字符串中中文,英文,数字,空格的个数
  9. Javascript特效:阿鲁的相册
  10. 软件工程-----个人总结
  11. 英语学习(五)形容词和副词(AdjectiveAdverb)
  12. 使用linux,导出mysql数据库信息,连接聚石塔
  13. jNs 在 ASP.NET MVC 项目中的应用
  14. 游戏 csp 201712-2
  15. 计算机专业推荐的一些超级好用的软件
  16. 猫眼电影票房爬取到MySQL中_猫眼电影爬取(一):requests+正则,并将数据存储到mysql数据库...
  17. dpkg dependency problems prevent configuration
  18. 一款基于chatGPT的插件【Merlin】,聊天式感受强大AI能力
  19. Java调用python项目实战
  20. 高拍仪 js调用demo_颜值高、性能好的小程序组件库,带给你不一样的视觉体验...

热门文章

  1. 三维建筑动画让你看懂真实的设计图
  2. 【新知实验室】腾讯云TRTC初体验
  3. 如何挑选微信第三方开发商
  4. 走进C++11(四十)最宽松的顺序 memory_order_relaxed 内存模型(三)
  5. 【项目】区块链在电商领域中的应用-草莓糖(CMT)(一)
  6. 嵌入式软件工程师学习规划
  7. 怎样将纸质文档转换成图片,然后转换成word文字
  8. 手把手教你读财报----银行业----第三课
  9. 国微高校 html源码,国微CMS模板结构_模板教程_广州国微软件高校站群系统---领先的高校站群系统方案|全媒体方案|学校网站系统...
  10. 【转】征集华人操作系统项目列表