每一次切换文件操作模式必须调用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 的使用的更多相关文章

  1. fopen,fwrite,fread使用

    fopen, fwrite, fread详解 1.头文件 #include <stdio.h> 2.fopen (1) 函数原型 FILE *fopen(char *filename, * ...

  2. C-fopen,fwrite,fread,fseek,fgets,popen,access笔记

    FILE * fopen(const char * path,const char * mode); 所需库: <stdio.h> 返回值 FILE是C语言定义的标准数据结构,如果open ...

  3. 文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"

    char const* filename="D:/hello.txt"; 路径名使用的是“/”或者使用 转义字符“\\”: "fopen", FILE *fp= ...

  4. MATLAB中提高fwrite和fprintf函数的I/O性能

    提高fwrite和fprintf函数的I/O性能 http://www.matlabsky.com/thread-34861-1-1.html     今天我们将讨论下著名的fwrite(fprint ...

  5. C++问题--fread文件读不完整问题解决

    今天突然遇到一个问题,用fwrite/fread读写文件,发现当fread读取文件时只能读一半, 即使用foef()查看是否读到文件结尾,也是显示文件已经读取到文件末尾,查看文件的返回值发现文件只读取 ...

  6. 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口

    最近学习linux系统下的应用编程,参考书籍是那本称为神书的<Unix环境高级编程>,个人感觉神书不是写给草鞋看的,而是 写给大神看的,如果没有一定的基础那么看这本书可能会感到有些头重脚轻 ...

  7. file文件的操作

    <?php //echo readfile('D:\\123.txt');//读取文件内容第一种方式,返回字符串,但是带有长度 echo '<br>'; //var_dump(fil ...

  8. IOS - 本地数据持久化

    转:相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如“是否第一次打开”的BOOL值,大 到游戏的进度和状态等数据,都需要进行本地持久化存储.这些 ...

  9. 【三支火把】---C文件学习

    ---恢复内容开始--- 又看了一遍文件的知识点了,断断续续已经看了2-3遍,也就这次花了点时间做了一下总结,以后我想都不会再去翻书了,哈哈. 1. 基于缓冲区的文件操作2. 打开关闭文件3. 单个字 ...

随机推荐

  1. 实现redis缓存,缓存穿透简单原理

    String get(String key) { String value = redis.get(key); if (value == null) { if (redis.setnx(key_mut ...

  2. React-Router常见API

    React-Router是React项目中处理路由的库. 1. HashRouter 通过hashchange监听路由的变化,通过window.location.hash赋值触发监听的变化. 本质是一 ...

  3. 探索性数据分析(Exploratory Data Analysis,EDA)

    探索性数据分析(Exploratory Data Analysis,EDA)主要的工作是:对数据进行清洗,对数据进行描述(描述统计量,图表),查看数据的分布,比较数据之间的关系,培养对数据的直觉,对数 ...

  4. win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

    环境 WIN平台IIS服务器   经常出现于ASPX页面 汇总 1.权限问题 出现场景 : 基于ACCESS数据库   原因解析 : 1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与 ...

  5. mysql 为啥用b+ 树

    原因就是为了减少磁盘io次数,因为b+树所有最终的子节点都能在叶子节点里找见, 所以非叶子节点只需要存`索引范围和指向下一级索引(或者叶子节点)的地址` 就行了, 不需要存整行的数据,所以占用空间非常 ...

  6. 百度编辑器(ueditor)踩坑,图片转存无法使用

    在使用 百度编辑器 的过程中碰到了一些问题,图片转存功能无法使用, 即便是疯狂地在官方 Demo.文档.论坛甚至是 GitHub 上也没找到理想的答案.(┗|`O′|┛) (真是日了狗) 问题描述 默 ...

  7. Linux 备份工具dump

    dump的功能很强,除了可以备份整个文件外,还能够针对目录来备份,还可以指定等级.什么意思呢?假设你的/home是独立的一个 文件系统,那你第一次进行过dump后,再进行第二次dump时,可以指定不同 ...

  8. px,em和rem

    1 px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的 2 em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字 ...

  9. Unity3D特效入门教学视频教程合集

    目录 大小25GB,Mp4格式,语言:中文 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主

  10. MacOS安装rJava

    rJava出了名的难装,一大堆问题. 核心的问题: 1. java版本问题,最好用1.8版本的java 2. 编译器的问题 3. 相关头文件header的问题 之前几次装过,但都放弃了,这次花了一下午 ...