每一次切换文件操作模式必须调用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. MySQL 硬链接删除大表

    在清理整个大表时,我们推荐使用drop,而非delete.但是如果表实在太大,即使是drop,也需要消耗一定的时间.这时可以利用linux的硬连接来快速删除大表,操作过程如下:有一个大表test,共有 ...

  2. zeebe 0.20.0 发布生产可用了!

    一个比较好消息,来自camunda zeebe 团队的消息,zeebe 0.20.0 发布,终于可以生产可用了 如果关注了官方的声明的话,同时团队也出了一个自己的许可协议,但是和大部分当前的开源 产品 ...

  3. JavaScript高级程序编程(四)

    2017.7.12  北京 数伏第一天 本日总结: 1.线上服务器时常显示.woff文件丢失解决办法 (IIS服务器) 添加MIME类型 添加三条: 文件扩展名      MIME类型 .svg    ...

  4. Processing设计Android APP(1) - 安装

    1.安装环境: A. Android Studio B. Processing 3.4 (64bit) 首先,直接安装Android Studio,我这里版本是3.2.1. 然后,新建一个Sample ...

  5. 【洛谷P5049】旅行(数据加强版)

    题目链接 m=n-1是直接按字典序dfs就行, m=n时是一棵基环树,我们发现当一个点在环上时,可以把它和它的一个在环上的儿子之间的边删掉,然后回溯,到达它的第一个有其他儿子的祖先的另一个儿子上,我们 ...

  6. MAKEFILE编写学习--1

    makefile是在编译中大型程序中使用的自动化编译工具make依赖的指令文件.这样可以使得程序的编译更加便捷快速. makefile的一般规则如下: target ... : prerequisit ...

  7. 百度地图中如何获取到发布的SHA1

    百度地图中如何获取到发布的SHA1 下面介绍的是一种通过命令的方式获取到发布版SHA1的方法: 打开Android的命令行Terminal: 1.首先进入到.android文件所在的目录,我的是如下图 ...

  8. httpd.exe你的电脑中缺失msvcr110.dll怎么办(WIN2008服务器环境装WAMP2.5出现的问题)

    httpd.exe你的电脑中缺失msvcr110.dll怎么办 去微软官方下载相应的文件 1 打开上面说的网址 Download and install, if you not have it alr ...

  9. java JBDC操作

    类似:c# 里面的ado.net  增删改查,动手做Demo  (当然实际企业开发很少用这种方式 ). ps:以前从一开始 搞ssm spring Boot spring Mvc 什么都懂一点.什么都 ...

  10. webpack构建篇

    WEBPack 构建  --  基于webpack4 1.环境准备 NodeJs: 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.其使用了一个事件驱动.非阻塞式 I/O 的模 ...