每一次切换文件操作模式必须调用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. 关于#pragma once和#ifndef

    [1]#pragma once这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式:另一种是#pragma once方式.在能够 ...

  2. Redis的通用key操作

    这些操作跟具体的类型没有关系,而是跟key相关. 1.查询Redis中的key的名称: 所有key: 以my开头: 2.删除键: 3.判断某一个键是否存在: 4.重命名: 5.设置过期时间: 如果未设 ...

  3. Xamarin安装及调试

    Xamarin介绍 Xamarin是一个跨平台的开发框架(工具集),创始于2011年,旨在使移动开发变得难以置信地迅捷和简单,它是跨平台的,它允许开发人员有效创建可跨 iOS.Android.Wind ...

  4. isntall

    #! /bin/bash # zabbix server address zabbix='10.10.238.110' # repo address REPO='10.10.238.114:4507' ...

  5. DotNetty 常用库

    https://github.com/Azure/DotNetty DotNetty中几个重要的库(程序集): DotNetty.Buffers: 对内存缓冲区管理的封装. DotNetty.Code ...

  6. CSPS_111

    这场是众神的AKsh♂ow 而我T2 long long没开够没有AK 如果这是CS... T1 迭代就可以 T2 设x不断除2直到x为奇数得到的奇数为y 则y相同的所有x明显分成了两个互斥的部分 对 ...

  7. 【后缀数组】【SP1811】 LCS - Longest Common Substring

    题目链接 题意翻译 输入2 个长度不大于250000的字符串,输出这2 个字符串的最长公共子串.如果没有公共子串则输出0 . 思路 求两个串的最长公共子串 代码 #include<iostrea ...

  8. 洛谷P2877 [USACO07NOV]防晒霜Sunscreen

    题目 此题有多种贪心方法. 首先简化题意: 有几个在数轴上的区间,和几个在数轴上确定的位置的点,问用这些数目的点,最多能满足多少个区间里有点. 注意:此题跟区间选点问题不一样,每个点只能满足一个区间, ...

  9. Markdown文字添加颜色

    转自:原文地址 添加红色 效果: 写法: $\color{red}{red}$ 添加绿色 效果: 写法: $\color{green}{green}$ 添加蓝色 效果: 写法: $\color{blu ...

  10. iview 的事件绑定

    iview 内的组件样式是不错,有时候我们想用它且绑定某个事件: 比如,我们使用了步骤条组件(Steps),然后绑定点击事件,实现每次点击某个步骤条内的step 就显示此step的具体信息, < ...