使用fwrite,fread需要注意的问题

关于标准C文件流读写问题:fopen,fread,fwrite,fclose的一些注意事项 2013-08-23: 引起该博客的原因: 1. 这几天在做“软件增量升级”设计,其中要用到文件流的读写方法,因为想实现在苹果,android,win32上的跨平台性,所以读写方法使用了标准C的文件流操作方法;   该博客目的: 1. 在代码编写过程中,使用标准C文件操作方法时遇到的各种问题,为将来重复使用打好基础,避免再出现该类问题;   关键内容: 1,fopen可以对一个文件 阅读详情

表头文件  #include<stdio.h>

fwrite(将数据写至文件流)
定义函数  size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明  fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。
 返回值  返回实际写入的nmemb数目。

int iWrite = fwrite(ptr,sizeof(int),4,file); //返回4,即写入4个int长度的数据
int iWrite = fwrite(ptr,1,4,file);//返回4,即写入4个字节的数据
int iWrite = fwrite(ptr,4,1,file);//返回1,即写入1个长度为4的数据
int iWrite = fwrite(ptr,4,2,file);//返回2,即写入2个长度为4的数据


按fwrite的语义,不是说你一次写多少数据就能全部写入的,因为缓存有限的说,并且不同的OS缓存大小可能还不一样。正确的写法:

int   nTotalWritedBytes   =   0;  
int   nCurWritedBytes   =   0;   
while(nTotalWritedBytes   <   nBitsSize)  
{  

     //返回实际写入的数据数目
     nCurWritedBytes = fwrite(pBytes+nTotalWritedBytes, 1, nBitsSize-nTotalWritedBytes, fp);   
     if(nCurWritedBytes   <   0)   
     {  
     return   FWRITE_FAILURE;   //出错
   }   
     nTotalWritedBytes   +=   nCurWritedBytes;   //实际写入的数据量
}

 

fread(从文件流读取数据)  
定义函数  size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明  fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。
 返回值  返回实际读取到的nmemb数目。

IgH EtherCAT 从入门到精通:第 2 章 环境搭建与编译安装 环境搭建与编译安装指南 本章详细介绍了搭建IgH EtherCAT Master开发环境的完整流程。内容包括: 硬件要求:支持多种Intel和Realtek网卡的原生驱动,以及通用网卡的generic驱动选项 软件依赖:列出Linux系统下所需的工具链和开发包 源码获取:通过Git克隆官方仓库并切换稳定版本的方法 配置选项:详细解析bootstrap脚本和configure的核心参数,包括路径设置、功能开关和实时框架选项 编译流程:从生成构建系统到最终编译安装的完整步骤 通过本章指导,读者可以完成一个可运行 阅读详情

相关推荐

STM32CubeIDE(CUBE-MX hal库)----RTC时钟断电保持与时间校准实战

本文详细介绍了在STM32CubeIDE中使用CUBE-MX和HAL库实现RTC时钟断电保持与时间校准的实战方法。通过硬件配置、后备寄存器(BKP)操作及软件校准策略,确保嵌入式设备在断电后仍能保持准确时间,适用于智能电表、环境监测等物联网应用场景。

weixin_29189373的博客 216

C中文件读取fread和fwrite 返回值等注意事项

#include        size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);        size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);  The  function  fread() read

cloud 的学习时代 1万+

基于Python实现基于遥感指数的水体提取

基于Python实现基于遥感指数的水体提取

gis收藏家的博客 6145

fread,fwrite数据写磁盘流程|fflush--linux编程写文件注意问题(fwrite没有直接写入文件)

fwrite,fflush https://blog.csdn.net/zhangxiong2532/article/details/50608898 fread,fwrite>>内存缓冲(用户空间) -->fflush>>内核缓冲--->fsync>>磁盘 fflush:标准I/O函数(如:fread,fwr...

我的笔记本 7788

科研绘图实战:用Adobe Illustrator高效排版期刊论文图片

本文详细介绍了使用Adobe Illustrator高效排版科研论文图片的完整工作流。针对期刊投稿常见的图片格式问题,文章重点讲解了矢量图与位图的预处理、AI中的精准对齐与分布技巧、文字样式统一管理以及最终输出TIFF/PDF等符合出版要求的格式。掌握这套方法能确保图片满足高分辨率、规范字体和精确尺寸等期刊硬性标准,显著提升投稿效率。

tomato的博客 1424

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 209

C语言文件输入输出函数fread,fwrite的使用注意事项

/* 直接输入输出函数: int fread(void*pointer,int size,int count,FILE*fp) int fwrite(void*pointer,int size,int count,FILE*fp) pointer是一个指针,在fread函数中它表示存放输入数据的首地址;在fwrite函数中,它表示存放输出数据的首地址 size表示数据的字节数 count表示...

qq_33449790的博客 1649

STM32F103C8T6+HX711实战:从零打造智能体重秤(附OLED显示与语音播报)

本文详细介绍了基于STM32F103C8T6微控制器和HX711称重模块,从零构建智能体重秤的完整实战教程。内容涵盖硬件选型、系统架构、驱动编写、数据滤波校准算法,并实现了OLED显示与语音播报功能。该项目是嵌入式学习的综合性实践,尤其适合作为毕业设计课题,帮助开发者掌握传感器应用、数据处理及人机交互等核心技能。

weixin_28285943的博客 517

C语言在使用fread()和fwrite()进行文件读和写操作时的注意事项

C语言里面文件流注意事项: FILE *a=fopen(“文件路径”,“打开模式”);//创建文件流 在使用fread(读出数据存储位置,单个数据块字节大小,数据块个数,文件流)和fwrite(被写入数据,单个数据块字节大小,数据块个数,文件流)对文件进行写和读操作的时候,如果在读或者写操作之前出现了对同一个文件的写或者读操作的时候需要将前一个文件流关闭才能顺利操作,即:同一个文件不能用两种打开模式打开: 例: #include<stdio.h> FILE *a=fopen(".\a.txt",

m0_56060629的博客 769

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 421

2023华为OD机试真题B卷 Python 实现【最长的元音子串长度】

定义当一个字符串只有元音字母(a,e,i,o,u,A,E,I,O,U)组成,称为元音字符串,现给定一个字符串,请找出其中最长的元音字符串,并返回其长度,如果找不到请返回0, 字符串中任意一个连续字符组成的子序列称为该字符串的子串

MISAYAONE的博客 898

fopen /open,read/write和fread/fwrite区别

fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write 这里简单的介绍一下他们的区别。 1. fopen 系列是标准的C库函数;open系列是 POSIX 定义的,是UNIX系统里的system call。 也就是说,fopen系列更具有可移植性;而open系列只能用在 POS

goodspringin的专栏 1000

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

fread,fwrite数据写磁盘流程|fflush--linux编程写文件注意问题(fwrite没有直接写入文件)...

目录 fread,fwrite数据写入磁盘的流程 fwrite,fflush fwrite和write的区别 fwrite,fflush-----linux编程写文件注意问题(fwrite没有直接写入文件) fread,fwrite数据写入磁盘的流程 2019-11-07 09:28:08 fwrite,fflush fwrite,ff...

小鱼菜鸟的博客 1203

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

fread和fwrite注意

fwrite(将数据写至文件流) 定义函数  size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); 函数说明  fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入

专业减肥计划 1639

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用fread和fwrite函数读写文件

size_t   fread (void *ptr, size_t size, size_t nitems,FILE *stream); nitems表示块数,size表示每个块具有size个字节大小,也就是说一次性可以读取 size * nitems个字节。   siez_t fwrite(const void *ptr, size_t size, size_t nitems, FILE

u012735451的专栏 1367

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

fread与fwrite函数

说明:只供学习交流,转载请注明出处   fread函数: 功能:从一个流中读取数据。   头文件 #include 函数原型 int fread(void *ptr, int size, int  nitems, FILE *stream); 返回值 成功 失败 读取的元素个数

angelo 1351

fwrite和fread函数的用法小结

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。 #include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *s

唛哩唛哩轰 3646

fopen fwrite fread 问题小记

测试代码(测试环境ubuntu + gcc): #include #include struct que_st1 { int a; int b; int c; char buf[100]; }str1; struct que_st2 { int a; int b; int c; char buf[1000]; }str2; // 测试1,无存储文件时,直接读取,运行输出

wy0110的专栏 2216

fread()和fwrite()函数分析

 fread()和fwrite()函数分析   在C语言中进行文件操作时,我们经常用到fread()和fwrite(),用它们来对文件进行读写操作。下面详细绍一下这两个函数的用法。  我们在用C语言编写程序时,一般使用标准文件系统,即缓冲文件系统。系统在内存中为每个正在读写的文件开辟“文件缓冲区”,在对文件进行读写时数据都经过缓冲区。要对文件进行读写,系统首

469

fread 和 fwrite用法小结

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。 [cpp] view plaincopyprint? #include    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);   size_t fw

u014529755的专栏 1031

C++文件读写(2)fread与fwrite

fread与fwrite函数的使用,含详细注释与说明

计算机视觉的学习日常 1637

fread和fwrite用法小结

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。 #include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nme...

weixin_34313182的博客 121

小记:注意fread和fwrite的参数顺序

    C标准库提供的文件函数fread和fwrite的原型为: size_t fread(    void *buffer,   size_t size,   size_t count,   FILE *stream );size_t fwrite(   const void *buffer,   size_t size,   size_t count,   FILE *stream ); ...

iteye_19319的博客 312

fwrite和fread函数的用法小结(转)

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。 1 #include &lt;stdio.h&gt; 2 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 3 size_t fwrite(const void *ptr, size_t size...

weixin_34377919的博客 164

c语言(read、write)和(fread、fwrite)和(fgets、fputs)三对函数分别实现文件拷贝功能, 模拟Linux下的cp命令

Linux环境下,c语言(read、write)和(fread、fwrite)和(fgets、fputs)三对函数分别实现文件拷贝功能, 模拟Linux下的cp命令

qq_52308536的博客 705
上一篇: 【转】PNG文件结构分析(下:在手机上生成PNG文件)
下一篇: 【转】Windows Mobile中如何建立GPRS连接以便Socket能正常通信
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值