C语言fread和fwrite的用法详解_fwrite和fread函数的用法小结-程序员宅基地

技术标签: C语言  

fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets() 遇到换行符就结束读取。如果希望读取多行内容,需要使用 fread() 函数;相应地写入函数为 fwrite()。

Windows 系统,使用 fread() 和 fwrite() 时应该以二进制的形式打开文件。

fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制。fread() 的原型为:

size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );

fwrite() 函数用来向文件中写入块数据,它的原型为:

size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );

对参数的说明:

	ptr 为内存区块的指针,它可以是数组、变量、结构体等。fread() 中的 ptr 用来存放读取到的数据,fwrite() 中的 ptr 用来存放要写入的数据。
	
	size:表示每个数据块的字节数。
	
	count:表示要读写的数据块的块数。
	
	fp:表示文件指针。
	
	理论上,每次读写 size*count 个字节的数据。

size_t 是在 stdio.h 和 stdlib.h 头文件中使用 typedef 定义的数据类型,表示无符号整数,也即非负数,常用来表示数量。

返回值:返回成功读写的块数,也即 count。如果返回值小于 count:

	对于 fwrite() 来说,肯定发生了写入错误,可以用 ferror() 函数检测。
	
	对于 fread() 来说,可能读到了文件末尾,可能发生了错误,可以用 ferror() 或 feof() 检测。

示例 从键盘输入一个数组,将数组写入文件再读取出来。

#include<stdio.h>
#define N 5
int main(){
   
    
    //从键盘输入的数据放入a,从文件读取的数据放入b
    int a[N], b[N];
    int i, size = sizeof(int);
    FILE *fp;

    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45743799/article/details/104556695

智能推荐

java8两个list中发数据比较_Java8 Stream对两个 List 遍历匹配数据的优化处理操作-程序员宅基地

文章浏览阅读1.2w次。使用场景,有两个List>集合,第一个集合的所有元素都是需要保留的。第一个集合的值为:{name=张三丰1, id=1}{name=张三丰2, id=2}{name=张三丰3, id=3}{name=张三丰4, id=4}{name=张三丰5, id=5}{name=张三丰6, id=6}{name=张三丰7, id=7}{name=张三丰8, id=8}第二个集合的值为:{grade=61..._list stream 比较

五子棋游戏JS实现-程序员宅基地

文章浏览阅读846次。使用HTML5和JS实现五子棋游戏

Androidstudio的gradle过大内存溢出解决-程序员宅基地

文章浏览阅读5.3k次。首先贴出问题:解决思路如下图:

多模态系列-综述MM-LLMs: Recent Advances in MultiModal Large Language Models-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏30次。在过去的一年中,多模态大型语言模型(MM-LLMs)取得了实质性的进展,通过高效的训练策略,增强了现成的语言模型,以支持多模态输入或输出。由此产生的模型不仅保留了语言模型的固有推理和决策能力,还赋予了多样化的多模态任务。在本文中,我们提供了一份旨在促进进一步研究多模态大型语言模型的综合调查。首先,我们概述了模型架构和训练流程的一般设计公式。随后,我们介绍了一个包含122个多模态大型语言模型的分类体系,每个模型都具有其特定的公式。

一文带你了解三大开源关系型数据库:SQLite、MySQL和PostgreSQL_开源数据库-程序员宅基地

文章浏览阅读3.9w次,点赞115次,收藏184次。一文带你了解三大开源关系型数据库:SQLite、MySQL和PostgreSQL。_开源数据库

linux静态库和共享库-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏15次。1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体_共享库

随便推点

Reason: No converter found capable of converting from type [java.lang.String] to type_no converter found capable of type to datasource-程序员宅基地

文章浏览阅读6k次。问题Failed to bind properties under ‘spring.datasource.type’ to java.lang.Class<javax.sql.DataSource>:Error starting ApplicationContext. To display the conditions report re-run your application ..._no converter found capable of type to datasource

图解PCB板元器件焊接流程-程序员宅基地

文章浏览阅读2.6k次。以下内容来源于网络,如有侵权,请联系作者删除。

数据格式(定点表示 浮点表示)_以定点格式显示浮点数值-程序员宅基地

文章浏览阅读1.3w次,点赞14次,收藏52次。计算机常用的数据表示格式有两种:定点表示:小数点位置固定(数值范围有限)浮点表示:小数点位置不固定(数值范围很大)定点表示概念:所有数据的小数点位置固定不变表示方法:符号位+量值(尾数)特点: 数的范围受字长限制,表示数的范围有限; 计算机中多用定点纯整数表示,所以将定点数表示的运算简称为整数运算分类:理论上小数点位置可以任意,但实际上将数据表示成如下两种形式 ..._以定点格式显示浮点数值

单网卡实现 双IP 双网段(内外网)同时运行_单网卡双ip-程序员宅基地

文章浏览阅读3.5k次。5.打开高级(V)如下图,添加内网IP,设置跃点(外网跃点设置小,内网跃点设置大,跃点越小优先级越高),关闭自动跃点设置一个数(这里有一个问题:如果关闭自动跃点每次打开自动勾选自动跃点的一般是网卡驱动问题重装驱动可以解决),不懂设置啥跃点的就和我一样设置10、20,接口跃点设置为11。理论上都设置静态IP后把外网跃点设置小,内网跃点设置大,关闭自动跃点设置同一个接口跃点数,在通过命令提示符添加内网网址走内网网关就可以了)。子网掩码:主要是第一个数根据自己的内网掩码来,后面0就好(255.0.0.0)_单网卡双ip

POI页眉页脚生成页码,首页无页码_java poi word生成页码-程序员宅基地

文章浏览阅读990次。对于网上主流的方法只适用于全文档生成页码,无法适用首页或前几页需要将页码屏蔽的情况(本人只用于直接代码使用POI从无到有生成一个文档,不是读取已有文档再编辑的情况)_java poi word生成页码

WPF 自定义DateControl DateTime控件-程序员宅基地

文章浏览阅读533次。原文:WPF 自定义DateControl DateTime控件自定义日期控件,月份选择。如下是日期的一些效果图。具体的样式、颜色可以根据下面的代码,自己调节即可1、日期控件的界面<UserControl x:Class="WpfApplication10.DateSelectControl"xmlns="http://schem..._wpf 时间控件美化