目录

  • 函数原型
  • 比较返回值与fread时间
  • 补充

使用fread返回值时需要注意,返回值不一定是读取到的字节数

函数原型

 //每次读取size个  读取nmemb次
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
//每次写入size个  读取nmemb次
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

返回值
RETURN VALUE
On success, fread() and fwrite() return the number of items read or written. This number equals the number of bytes transferred only when size is 1.

解析:当size=1的时候,返回值为读取/写入的字节数,如果size不为1则返回值不为字节数。
返回读写的次数,如果size=1,则返回值为读到的字节数。

比较返回值与fread时间

int get_string()
{FILE *fp;fp = fopen("flow.txt","r");if(fp == NULL){printf("open flow error\n");return -1;}int ret=-1;char buf[512];struct timeval start, end;int interval;gettimeofday(&start, NULL);ret = fread(buf,1,26*5,fp);gettimeofday(&end, NULL);interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);printf("ret1=%d\t",ret);printf("interval = %f\n\n", interval/1000.0);fseek(fp,0L,SEEK_SET);gettimeofday(&start, NULL);ret = fread(buf,26*5,1,fp);gettimeofday(&end, NULL);printf("ret2=%d\t",ret);interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);printf("interval = %f\n\n", interval/1000.0);fseek(fp,0L,SEEK_SET);gettimeofday(&start, NULL);ret = fread(buf,1024,1,fp);gettimeofday(&end, NULL);printf("ret3=%d\t",ret);interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);printf("interval = %f\n\n", interval/1000.0);fclose(fp);return 0;
}

打印输出

ret1=130    interval = 0.005000ret2=1 interval = 0.001000ret3=0 interval = 0.001000

ret1 返回130,代表真实读到的字节数,因为每次只读一个字节,读取了130次,耗费时间比较大
ret2 返回1,读取1次,每次读26*5个字节,读到多少字节不知道,时间0.001000
ret3 返回0, 读取1次,每次读1024个字节 时间0.001000

ret2 ret3 读取不同的字节数量,但花费的时间一样。
ret2 ret3 返回值不同,ret3返回0,这与ret2返回的一次不同。

fwrite 的返回值也有同样的含义。

补充

 If an error occurs, or the end of the file is reached, the return value is a short item count (or zero).

如果读写期间发生错误,或者到文件的结尾,返回的值是0,这在判断异常或者读到文件尾时非常有用。具体是哪种错误需要使用feof()或ferror()来决定。

循环读取文件,使用feof判断是否读到文件尾

int main()
{FILE *p = fopen("a.txt", "rb");char buffer[4] = {0};while(!feof(p)){memset(buffer, 0, sizeof(buffer));fread(buffer, sizeof(char), sizeof(buffer), p);printf("buffer = %s\n", buffer);}return 0;
}

fread函数的返回值相关推荐

  1. java实现fread_C中fread()函数的返回值

    这个问题很容易搞错,并导致很多问题,需要强调的是fread函数返回的并不是字节数. realRead = fread(buf,item,count,fp)    (每次读item大小的数据块,分cou ...

  2. wpf 窗口的返回值_如何:获取页函数的返回值

    如何:获取页函数的返回值How to: Get the Return Value of a Page Function 03/30/2017 本文内容 本示例显示如何获取页函数的返回值.This ex ...

  3. getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析...

    2013-07-18 21:35:58 getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析. char是字符型数 ...

  4. ajax回调函数的返回值,使用ajax和回调函数向函数传递/返回值

    我试图读p_info函数返回从函数getproductInfo包含ajax调用,但我得到未定义的值.我使用回调函数来实现这一点,但仍然无法正常工作.我错在哪里?使用ajax和回调函数向函数传递/返回值 ...

  5. Long类型传到前端失去精度(2):Long类型不是实体类的某一个字段,Long类型是一个函数的返回值

    Long类型传到前端失去精度(2):Long类型不是实体类的某一个字段,Long类型是一个函数的返回值 又是转换Mybatis-Plus的一天,又遇到了之前熟悉的问题:Long类型传到前端失去精度.可 ...

  6. C++知识点8——函数的返回值

    函数的返回值不能是数组或函数,但是可以是是数组和函数的指针或引用 函数返回一个值的过程和初始化完全一致,先创建一个临时变量,用返回值初始化该临时变量,然后用该临时变量去初始化另一个变量或者给另一个变量 ...

  7. 函数的初识;函数的返回值;函数的传参

    函数的初识: 避免重复代码,增强可读性. 函数是以功能为导向的. def 函数名(形参): 函数体 函数名() 实参 def 关键字 函数名(与变量命名规则一样) 1.由数字字母下划线组成 2.不能由 ...

  8. Swift2.0语言教程之函数的返回值与函数类型

    Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...

  9. Python基本语法_函数_返回值

    目录 目录 前言 函数的返回值 在函数中Return和Print的区别 函数中的文档 前言 函数的返回值是函数重要的组成部分.函数的根本在于实现程序的部分功能,所以很多时候我们需要将函数执行后的结果返 ...

最新文章

  1. redis持久化方案比较
  2. 以后台服务的形式启动nodejs应用
  3. 基础 - 常见字符的ASCII码
  4. mac+nginx+php70+mysql环境搭建
  5. PHP自定义数组转Json字符串函数
  6. 用云来实现主机效率的最大化 CSC这家公司是怎么做的?
  7. Tool-X:在AndroidUbuntu平台安装Kali的各种小工具
  8. Java思维导图(七)
  9. win10远程桌面Android软件,Microsoft发布了适用于Android的远程桌面应用程序10.0.7版的重大更新...
  10. 解决SecoClient接收返回码超时
  11. Ubuntu更新nvidia显卡驱动
  12. 【计算机视觉40例】案例14:指纹识别
  13. MTK 6737平台RILD的实现
  14. 苹果怎么换行打字_微信新功能上线!安卓苹果都有!网友:再也不怕被刷屏了!!...
  15. 【数学建模】基于matlab GUI平行停车模拟仿真【含Matlab源码 1877期】
  16. nba购票系统php,2019nba中国赛门票怎么买?(附票价+购票方式)
  17. leetcode: 31. Next Permutation
  18. 查询搜狗域名权重对网站SEO优化有什么作用?
  19. java快速开发平台zcurd
  20. 虚拟乐器综合音源-Vir2 Instruments VI.ONE Kontakt

热门文章

  1. 拼多多新店如何获取免费流量,需要从哪些环节去优化,才能有效提升店内免费流量
  2. C++虚继承和虚析构函数
  3. webpack 之vue 初级打包2 从零开始
  4. docker原理及使用
  5. QPM(量化项目管理)
  6. python php csdn_Python爬虫Csdn系列II
  7. 第十二天---用户组管理与提权
  8. 如何巧妙的获取Win 7/xp开机密码方法(粘滞键漏洞)
  9. mouseout事件被不断触发
  10. php正则匹配实验报告,php正则匹配的相关知识总结