fwrite & fread 的使用
每一次切换文件操作模式必须调用fclose关闭文件。
如果直接切换操作模式,文件将损坏(出现乱码)或操作失败。
在调用了fclose时,作为参数的文件指针将被回收,必须再次定义,因此最好将功能封装。
存数组时,fwrite参数size_t size可使用sizeof(buffer[0]),size_t count可使用sizeof(buffer)/sizeof(buffer[0])。
fread返回了一个整数,是其成功读取的数据数目,最大值是其参数size_t count。
使用循环顺序读取时while(!feof(stream)),fread在一次读取不完整后触发文件尾条件。
一个例子:
#include<iostream>
#include<fstream> int main()
{
using std::cin;
using std::cout;
using std::endl;
cout << "Hello, I am a C++ test program." << endl;
cin.get();
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ FILE* _f0;
_f0 = fopen("f0.txt", "wb");
if (_f0 != NULL)
{
cout << "I created a file named \"f0\"." << endl;
cin.get();
int buf[];
cout << "size of buf[0] = " << sizeof(buf[]) << endl
<< "size of buf = " << sizeof(buf) << endl; for (int i = ; i < ; i++)
{
buf[i] = '' + i;
}
fwrite(buf, sizeof(buf[]), sizeof(buf)/sizeof(buf[]), _f0);
cout << "Then put some numbers into this file." << endl;
cin.get();
cout << "Read out these numbers:" << endl;
fclose(_f0);
FILE* _f1 = fopen("f0.txt", "rb");
cout << "f0 = " << _f1 << endl;
int i = ;
int R = ;
int n = ;
while (!feof(_f1))
{
n = fread(&R, sizeof(R), , _f1);
cout << "n = " << n << " buf[" << i << "] = " << R << endl;
i++;
}
fclose(_f1);
cout << "At last, add a number to the file." << endl;
FILE* _f2 = fopen("f0.txt", "ab");
R = '';
fwrite(&R, sizeof(R), , _f2);
fclose(_f2);
}
else
{
cout << "File creating failed." << endl;
} //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cout << endl << "Press enter to end.";
cin.get();
return ;
}
fwrite & fread 的使用的更多相关文章
- fopen,fwrite,fread使用
fopen, fwrite, fread详解 1.头文件 #include <stdio.h> 2.fopen (1) 函数原型 FILE *fopen(char *filename, * ...
- C-fopen,fwrite,fread,fseek,fgets,popen,access笔记
FILE * fopen(const char * path,const char * mode); 所需库: <stdio.h> 返回值 FILE是C语言定义的标准数据结构,如果open ...
- 文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"
char const* filename="D:/hello.txt"; 路径名使用的是“/”或者使用 转义字符“\\”: "fopen", FILE *fp= ...
- MATLAB中提高fwrite和fprintf函数的I/O性能
提高fwrite和fprintf函数的I/O性能 http://www.matlabsky.com/thread-34861-1-1.html 今天我们将讨论下著名的fwrite(fprint ...
- C++问题--fread文件读不完整问题解决
今天突然遇到一个问题,用fwrite/fread读写文件,发现当fread读取文件时只能读一半, 即使用foef()查看是否读到文件结尾,也是显示文件已经读取到文件末尾,查看文件的返回值发现文件只读取 ...
- 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口
最近学习linux系统下的应用编程,参考书籍是那本称为神书的<Unix环境高级编程>,个人感觉神书不是写给草鞋看的,而是 写给大神看的,如果没有一定的基础那么看这本书可能会感到有些头重脚轻 ...
- file文件的操作
<?php //echo readfile('D:\\123.txt');//读取文件内容第一种方式,返回字符串,但是带有长度 echo '<br>'; //var_dump(fil ...
- IOS - 本地数据持久化
转:相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如“是否第一次打开”的BOOL值,大 到游戏的进度和状态等数据,都需要进行本地持久化存储.这些 ...
- 【三支火把】---C文件学习
---恢复内容开始--- 又看了一遍文件的知识点了,断断续续已经看了2-3遍,也就这次花了点时间做了一下总结,以后我想都不会再去翻书了,哈哈. 1. 基于缓冲区的文件操作2. 打开关闭文件3. 单个字 ...
随机推荐
- LeetCode 1219. Path with Maximum Gold
原题链接在这里:https://leetcode.com/problems/path-with-maximum-gold/ 题目: In a gold mine grid of size m * n, ...
- know thself
- web大附件上传,支持断点续传
一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...
- learning scasl notes
接收类型参数的类和特质是“泛型”的,但是它们生成的类型是"参数化". ”泛型“的意思是我们用一个泛化的类或特质来定义许许多多具体的类型. 如果说S是类型T的子类型,那么Queue[ ...
- Chocolatey 方便的windows 包管理工具
windows 在包管理上一般大家都是网上下载二进制文件或者就是通过软件管家进行安装,这些对于开发人员可能就有点不是 很专业了, Chocolatey 是一个不错的windows 软件包管理工具 安装 ...
- SVN 常用 下载仓库
仓库的基本使用: 1.管理仓库的人会给你一个SVN的仓库地址,如: https://192.168.2.98:8443/svn/建筑工程健康监测系统 2.然后就下载仓库里面的所有文件 3.对仓库做增删 ...
- 转载:理解scala中的Symbol
相信很多人和我一样,在刚接触Scala时,会觉得Symbol类型很奇怪,既然Scala中字符串都是不可变的,那么Symbol类型到底有什么作用呢? 简单来说,相比较于String类型,Symbol类型 ...
- 什么是Java内存模型
转载 : https://www.jianshu.com/p/bf158fbb2432 在知识星球中,有个小伙伴提了一个问题: 有一个关于JVM名词定义的问题,说”JVM内存模型“,有人会说是关于JV ...
- C# System.Web.Mail.MailMessage 发邮件
C# System.Web.Mail.MailMessage 发邮件 新建控制台Console项目,然后添加 System.Web引用 代码如下: using System; using System ...
- EMQ 与 mqtt 与 IOT设备
1.IOT设备的特性 IOT(物联网things of internet)设备和传统的智能设备有什么区别,笔者总结下的IOT设备有如下特点: 硬件能力差(存储能力基本只有几MB,CPU频率低连使用HT ...