fread与fwrite

fseek 、fwrite 、fread fseek int fseek(FILE *stream, long offset, int fromwhere); 功能:把与fp有关的文件位置指针放到一个指定位置。 fseek(fp, 0L, SEEK_END); 范例一:fseek(fp, 0L, SEEK_END); 解释:文件指针定位到文件末尾,偏移0个字节 范例二: fseek(fp,50L,0);或fseek(fp,50L,S... 阅读详情

 

1.fread与fwrite

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。

1.  size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);  

2.  size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

 

返回值:读或写的记录数,成功时返回的记录数等于nmemb,出错或读到文件末尾时返回的记录
数小于nmemb,也可能返回0。

 

fread和fwrite用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构体或者一个定长数组。参数size指出一条记录的长度,而nmemb指出要读或写多少条记录,这些记录在ptr所指的内存空间中连续存放,共占size * nmemb个字节,fread从文件stream中读出size * nmemb个字节保存到ptr中,而fwrite把ptr中的size * nmemb个字节写到文件stream中。

 

 

memb是请求读或写的记录数,fread和fwrite返回的记录数有可能小于nmemb指定的记录数。例如当前读写位置距文件末尾只有一条记录的长度,调用fread时指定nmemb为2,则返回值为1。如果当前读写位置已经在文件末尾了,或者读文件时出错了,则fread返回0。如果写文件时出错了,则fwrite的返回值小于nmemb指定的值。下面的例子由两个程序组成,一个程序把结构体保存到文件中,另一个程序和从文件中读出结构体

 

1.  /* -------------------writerec.c--------------- */  

2.  #include <stdio.h>  

3.  #include <stdlib.h>  

4.  struct record {  

5.      char name[10];  

6.      int age;  

7.  };  

8.  int main(void)  

9.  {  

10.     struct record array[2] = {{"Ken", 24}, {"Knuth", 28}};  

11.     FILE *fp = fopen("recfile", "w");  

12.     if (fp == NULL) {  

13.         perror("Open file recfile");  

14.         exit(1);  

15.     }  

16.     fwrite(array, sizeof(struct record), 2, fp);  

17.     fclose(fp);  

18.     return 0;  

19. }  

20.   

21. /* -------------------readrec.c----------------- */  

22. #include <stdio.h>  

23. #include <stdlib.h>  

24. struct record {  

25.     char name[10];  

26.     int age;  

27. };  

28. int main(void)  

29. {  

30.     struct record array[2];  

31.     FILE *fp = fopen("recfile", "r");  

32.     if (fp == NULL) {  

33.         perror("Open file recfile");  

34.         exit(1);  

35.     }  

36.     fread(array, sizeof(struct record), 2, fp);  

37.     printf("Name1: %s\tAge1: %d\n", array[0].name, array[0].age);  

38.     printf("Name2: %s\tAge2: %d\n", array[1].name, array[1].age);  

39.     fclose(fp);  

40.     return 0;  

41. }

fwrite和fread的应用举例:
1.将一个字符串写入文件:

1.  char *str="hello,I am a test program!";  

2.  fwrite(str,sizeof(char),strlen(str),fp)  

 

 

 

 

2.将一个字符数组写入文件:

1.  char str[]={'a','b','c','d','e'};  

2.  fwrite(str,sizeof(char),sizeof(str),fp);

 

3.将一个整型数组写入文件:
    int a[]={12,33,23,24,12};
    先计算数组元素个数nmemb,之后
   fwrite(a,sizeof(int),nmemb,fp)
    注:由于程序生成的文件是二进制文件而非文本文件,因此,不用机器,整数的表达不同,
     所以无法直接打开生成文件。可通过fread函数检验数据是否写入文件。

 

SAP SD跨公司销售IDOC自动记账配置实战指南 本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。 阅读详情

相关推荐

如何降低 Claude Code 封号风险:实用指南

本文针对 Claude Code 用户频繁遭遇账号封禁的问题,提供了一套经过实战验证的解决方案。通过分析封号的根本原因——共享VPN导致的IP异常标记,文章详细介绍了如何通过"独立服务器+中转服务+环境配置"三步走策略,显著降低封号风险。

goodparty的专栏 2129

Verilog 文件操作-$fgetc,$fgets,$fscanf,$fread

原文网站:Verilog 文件操作-$fgetc,$fgets,$fscanf,$fread – 芯片天地 在Verilog 仿真中, 我们有时需要将文件中的数据,读入到仿真工程中使用。在Verilog 语法中提供$fgetc,$fgets,$fscanf,$fread 等系统函数,帮助开发者将文件中的数据读出,供仿真程序使用。 $fgetc使用 reg [7:0] <8-bit_reg>; <8-bit_reg> = $fgetc(<file_desc>...

weixin_37993576的博客 1万+

OpenWRT端口转发与NAT环回冲突的排查与解决

本文详细解析了OpenWRT路由器中端口转发与NAT环回功能冲突导致的内网访问故障。通过生活化类比阐明两者工作原理,提供从基础诊断到内核参数调整、LuCI选项配置及手动编写iptables规则的多套解决方案,并给出进阶排查思路,帮助用户彻底解决内网无法通过公网地址访问服务的常见问题。

weixin_29243279的博客 507

verilog常用系统任务和函数

在FPGA开发中编写仿真测试激励文件(testbench),经常会用到verilog的系统函数,使用系统函数非常方便,本文总结了常用的系统函数,并提供了说明和使用示例。

mengzaishenqiu的博客 3020

【ESP32开发】——开发环境搭建(VSCode+PlatformIO)

本章内容主要介绍ESP32的开发环境搭建(基于VSCode+PlatformIO)的流程与相应的注意事项,避免开发ESP32止于环境搭建!在项目的维护过程中,可以更好地管理和更新代码、调试问题,并且能够快速适应和采用新的功能、库或硬件平台。:VSCode 的代码提示和自动补全功能,以及 PlatformIO 的管理工具,都能帮助你编写规范、格式良好且易于阅读的代码。:Arduino 框架是一种简单、易用的嵌入式开发框架,适用于快速原型开发和小型项目。需要选择对应自己开发的开发板型号。

m0_61934621的博客 8417

Ubuntu 22.04远程桌面终极指南:从零配置RDP到解决黑屏问题

本文提供了一份Ubuntu 22.04远程桌面配置的终极指南,详细讲解了如何从零开始安装和配置RDP服务,并重点解决了连接后常见的黑屏问题。通过分析会话冲突、修复启动脚本及配置权限策略,帮助用户实现稳定、高效的远程桌面连接,优化分辨率、禁用锁屏,打造无缝的远程工作体验。

sony5的博客 1382

【Verilog 教程】7.2 Verilog 文件操作

例如,利用 $sscanf 将十六进制的数据 data_buf[2] 搬移到寄存器变量 data_get 时,可以先利用写字符串任务 $sformat 将源变量 data_buf[2] 的内容转为字符串型,存放在变量 data_test 中。字符数据先写"123"时,读出数据为"321"。写文件的系统任务主要包括:$fdisplay, $fwrite, $fstrobe, $fmonitor,以及它们对应的自带格式的系统任务 $fdisplayb, $fdisplayh, $fdisplayo 等。

高山 2037

基于传感器数据实现火灾报警预测分析

火警 系统当检测到烟雾、火灾、一氧化碳或其他与火灾有关或一般通知的紧急情况时,向人们发出警告

DT程序员的博客 722

Verilog ,SV文件操作

Verilog 文件操作

jerwey的博客 3185

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 640

YOLOv11改进 | 主干/Backbone篇 | 轻量化目标检测网络MobileViTv1改进yolov11有效涨点

本文给大家带来的改进机制是MobileViT系列的V1版本,其作为MobileNet网络的挑战者,其效果自然不用多说,MobileViT模型是为移动设备设计的轻量级、通用目的视觉变换器。它融合了卷积神经网络(CNN)和视觉变换器(ViT)的优势,旨在在保持高效性能的同时减少模型参数和降低延迟。通过其创新的MobileViT Block和多尺度训练方法,MobileViT在多个视觉任务上取得了优异的结果,欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。

Snu77的博客 2336

verilog常用系统函数以及例子

1.打开文件   integer file_id;   file_id = fopen("file_path/file_name"); 2.写入文件:$fmonitor,$fwrite,$fdisplay,$fstrobe   //$fmonitor只要有变化就一直记录   $fmonitor(file_id, "%format_char", parameter);  ...

alexstone2014的博客 1619

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 941

C语言fread和fwrite的用法详解

fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets() 遇到换行符就结束读取。如果希望读取多行内容,需要使用 fread() 函数;相应地写入函数为 fwrite()。 Windows 系统,使用 fread() 和 fwrite() 时应该以二进制的形式打开文件。 fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是...

weixin_45743799的博客 7191

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【C++】fwrite与fread

fwrite函数 函数功能:写数据块函数调用形式:fwrite(buffer, size, count, fp);函数说明: fread函数 函数功能:读数据块函数调用形式:fread(buffer, size, count, fp);函数说明:

3864

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

fread()fwrite()

fread函数和fwrite函数 1.函数功能 用来读写一个数据块。 2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)size:要读写的字节数; (3)count:要进行读写多少个...

qq_44571339的博客 3259

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

fread函数和fwrite函数详解

fread函数和fwrite函数详解 fread() 头文件:#include<stdio.h> 功能:是用于读取二进制数据 原型: size_t

Raywit的博客 1548

fread函数详解和fwrite函数详解

fread()函数与fwrite函数

dangzhangjing97的博客 2万+

fread和fwrite函数,C语言fread和fwrite函数详解

fread和fwrite函数,C语言fread和fwrite函数详解 转载自http://c.biancheng.net/view/399.html 对文件格式化读写函数 fprintf 与 fscanf 而言,尽管它可以从磁盘文件中读写任何类型的文件,即读写的文件类型可以是文本文件、二进制文件,也可以是其他形式的文件。但是,对二进制文件的读写来说,考虑到文件的读写效率等原因,还是建议尽量使用 f...

weixin_40893646的博客 962

【fread/fwrite】C语言API之fread/fwrite函数详解

参数说明:返回值:扩展: 1.文件读取方式:方式和方式 2.fread可以读二进制文件,有时用字符方式去读文件不能读完整个文件,因为字符方式用特定的标记结尾的,读取时只要碰到该标记就自动结束。但咱们可以使用二进制方式。 注意:fread() 不区分文件结尾和错误,调用者必须使用 feof(3) 和 ferror(3) 来确定发生了什么! 执行步骤: 结果如下:...

wang 恒 的博客 1399

fread fwrite

函数原型 size_t fread(void* buffer, size_t size, size_t count, FILE* stream) 从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。 buffer 用于接收数据的内存地址 size 要读写的字节数,单位是字节 coun

洛寒 485

fread和fwrite

函数功能  用来读写一个数据块。一般调用形式  fread(buffer,size,count,fp);  fwrite(buffer,size,count,fp);  (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。  (2)size:要读写的字节数;  (3)count:要进行读写多少个size字节的数据

iu_81的专栏 9522

fread函数和fwrite函数

fread函数和fwrite函数 1.函数功能   用来读写一个数据块。 2.一般调用形式   fread(buffer,size,count,fp);   fwrite(buffer,size,count,fp); 3.说明   (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。   (2)size:

angle0615303的专栏 2565

fopen、fread、fwrite等的使用

1 fopen 函数原型: FILE *fopen(const char *path, const char *mode); 返回值:返回值是一个FILE类型的文件流,例如FILE *fd; 参数:const char *path 文件的路径 const char *mode 打开模式: 权限 mode权限如下: r 只读方式打开一个文本文件 rb 只读方式打开一个二进制文件 w 只写方式打开一个文本文件 wb 只写方式打开一个二进制文件 a 追加方式打开一个文本文件 ab 追加方式

weixin_44372427的博客 400
上一篇: fputs与fgets
下一篇: C++ ifstream ofstream
ToConnection
博客等级 码龄16年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值