当前位置: 首页 > news >正文

【C语法学习】18 - fread()函数

文章目录

  • 1 函数原型
  • 2 参数
  • 3 返回值
  • 4 示例

1 函数原型

fread():从与指定流stream相关联的二进制文件中读取数据块储存在str指向的内存空间中,函数原型如下:

size_t fread(const void *ptr, size_t size, size_t count, FILE *stream)

2 参数

fwrite()函数有四个参数:

  1. 参数ptr是指向某内存空间的指针,该内存空间用于储存从文件中读取的数据块;参数ptr类型为void*型,说明ptr可以指向任何数据类型;
  2. 参数size指定了每个从文件读取的数据项的字节大小,类型为size_t(unsigned int)型;
  3. 参数count指定了从文件读取的数据项的个数,类型为size_t(unsigned int)型;
  4. 参数stream是一个指向FILE类型结构的指针;参数stream指定了fread()函数要读取的文件流,等于fopen()函数的返回值。

3 返回值

fread()函数的返回值类型为size_t(unsigned int)型:

  1. 读取文件成功,返回成功读取文件的数据项个数,返回值应等于count;
  2. 读取文件失败,返回值小于count。
1. fread returns the number of full items actually read, which may be less than count if an error occurs or if the end of the file is encountered before reaching count.

4 示例

先写文件后读文件并打印,代码如下所示:

#define SIZE 20int main()
{//int arr1[SIZE] = { 0 };int arr2[SIZE] = { 0 };int count;for (count = 0; count < SIZE; count++){arr1[count] = 2 * count;}//FILE* fp;if ((fp = fopen("1.dat", "wb")) == NULL){printf("Failed to open file.\n");exit(1);}if ((fwrite(arr1, sizeof(arr1), 1, fp)) != 1){printf("Failed to write file.\n");exit(1);}fclose(fp);//if ((fp = fopen("1.dat", "rb")) == NULL){printf("Failed to open file.\n");exit(1);}if ((fread(arr2, sizeof(arr2), 1, fp)) != 1){printf("Failed to read file.\n");exit(1);}fclose(fp);//for (count = 0; count < SIZE; count++){printf("%d\t%d\n", arr1[count], arr2[count]);}return 0;
}

代码运行结果如下图所示:

在这里插入图片描述

相关文章:

  • Java 语言环境搭建
  • ch579串口编程笔记
  • 婴儿专用洗衣机哪个牌子比较好?婴儿专用洗衣机哪个牌子比较好
  • CODESYS开发教程12-任务配置
  • Spring底层原理学习笔记--第二讲--(BeanFactory实现与ApplicaitonContext实现)
  • Oracle(10)Managing Undo Data
  • 【服务器使用】vscode winscp进行服务器容器连接(含修改初始密码)
  • maven之pom文件详解
  • Elasticsearch:在你的数据上训练大型语言模型 (LLM)
  • CHS零壹视频恢复程序高级版视频修复OCR使用方法
  • 如何通过一条数字人三维动画宣传片,打造出数字文旅
  • 【云原生基础】了解云原生,什么是云原生?
  • 模拟实现.net中的Task机制:探索异步编程的奥秘
  • java JUC并发编程 第十章 Synchronized与锁升级
  • 【数据结构】 二叉树理论概念!一文了解二叉树!
  • canvas 五子棋游戏
  • JavaScript新鲜事·第5期
  • js中的正则表达式入门
  • Making An Indicator With Pure CSS
  • mysql 5.6 原生Online DDL解析
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • REST架构的思考
  • Vue全家桶实现一个Web App
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 记一次用 NodeJs 实现模拟登录的思路
  • 模型微调
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 我的zsh配置, 2019最新方案
  • 项目实战-Api的解决方案
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • ()、[]、{}、(())、[[]]命令替换
  • (独孤九剑)--文件系统
  • (算法)前K大的和
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)http协议
  • (转)母版页和相对路径
  • (转)视频码率,帧率和分辨率的联系与区别
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net8 Blazor 尝鲜
  • .net解析传过来的xml_DOM4J解析XML文件
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [CTO札记]如何测试用户接受度?
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [DM复习]关联规则挖掘(下)
  • [docker]docker网络-直接路由模式
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • [flask]http请求//获取请求头信息+客户端信息
  • [hive] sql中distinct的用法和注意事项
  • [HJ56 完全数计算]