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. 单个字 ...
随机推荐
- Flask報錯 KeyError 'SQLALCHEMY_TRACK_MODIFICATIONS'.md
KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS' 关于flask-sqlalchemy中出现的 KeyError: 'SQLALCHEMY_TRACK_MODIFI ...
- Java获取两个指定日期之间的所有月份
String y1 = "2016-02";// 开始时间 String y2 = "2019-12";// 结束时间 try { Date startDate ...
- EXCEL复制可见单元格
Excel筛选后,复制筛选后的单元格 1, 首先还是复制这一部分内容. 2, CTRL+G打开 "定位"窗口. 3, 在 "定位"窗口中选择"定位条件 ...
- idea在docker环境,调试spring boot程序
允许docker被远程访问 见:https://www.cnblogs.com/wintersoft/p/10921396.html 教程见:https://spring.io/guides/gs/s ...
- Python语言编写BP神经网络
Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135 人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...
- Weblogic部署web项目获取项目根目录为null
写在前面 图片上传功能, web项目部署在本地Tomcat上并没有问题, 但是打成war包部署到Linux服务器Weblogic下却出现如题问题, 导致图片上传失败. 问题代码 String real ...
- Java多个线程顺序打印数字
要求 启动N个线程, 这N个线程要不间断按顺序打印数字1-N. 将问题简化为3个线程无限循环打印1到3 方法一: 使用synchronized 三个线程无序竞争同步锁, 如果遇上的是自己的数字, 就打 ...
- 迁移Git项目到Gitlab
假定Gitlab已经安装, 假定要迁移的Git项目目录为 demo 首先在Gitlab里创建一个新的project, 名称为demo (或者其他名称都可以) 然后在现有的Git项目目录下, 进行以下操 ...
- CEF 访问需要认证网页或接口(在Request的Headers中添加认证Token)
转载:https://blog.csdn.net/wdw984/article/details/85275289 1.首先要让我们自己的CefClient这个类公有继承CefRequestHandle ...
- 安装EOS合约工具eosio.cdt
安装: 安装完之后 会产生 eosio-cpp_, eosio-cc, eosio-ld, eosio-pp, and _eosio_abigen (These are the C++ compile ...