C++对二进制文件的操作实例
有5个学生的数据,要求:
(1)将它们存放到磁盘文件中;
(2)将磁盘文件中的第1,3,5个学生数据读入程序,并显示出来;
(3)将第三个学生的数据修改后存回磁盘文件中的原有位置;
(4)从磁盘文件读入修改后的5个学生的数据并在屏幕输出。
为了使自己能够看懂程序,先看说明:
istream&read(char *buffer,int len);
ostream&wirte(const*char *buffer,int len);
字符指针buffer指向内存中一段存储空间,len是读写的字节数。
abort函数的作用是退出程序,与exit函数的作用相同。
seekg(位移量,参照位置);以参照位置为基础,将输入指针移动若干字节;
seekp(位移量,参照位置);以参照位置为基础,将输出指针移动若干字节;
参照位置可以是下面三个之一:
ios::beg文件开头
ios::cur指针当前位置
iod::end文件末尾
#include<fstream>
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
struct student
{int num;char name[20];float score;
};
int main()
{student stud[5]={1001,"Li",85,1002,"Fun",97.5,1003,"Wang",98,1004,"Tan",76.5,1005,"Ling",96};fstream iofile("stud.dat",ios::in|ios::out|ios::binary);//用fstream类定义输入输出二进制文件流对象iofileif(!iofile){cerr<<"open error!"<<endl; abort();}for(int i=0;i<5;i++) //像磁盘中输入5个学生的数据 {iofile.write((char *)&stud[i],sizeof(stud[i]));} student stud1[5]; //用来存放从磁盘文件读入的数据for(int i=0;i<5;i+=2){iofile.seekg(i*sizeof(stud[i]),ios::beg);//定位于第0,2,4学生数据开头iofile.read((char *)&stud1[i],sizeof(stud1[0]));//先后读入3个学生的数据,存放在stud1[0], stud1[1],stud1[2]中cout<<stud1[i].num<<" "<<stud1[i].name<<" "<<stud1[i].score<<endl;//输出 stud1[0], stud1[1],stud1[2]各成员的值 } cout<<endl;//修改第3个学生(从0开始)的数据 stud[2].num=1012;strcpy(stud[2].name,"qianshou"); stud[2].score=100;iofile.seekp(2*sizeof(stud[0]),ios::beg); //定位到第三个数据的开头 iofile.write((char *)&stud[2],sizeof(stud[2])); //更新第三个学生的数据iofile.seekg(0,ios::beg); //从新定位于文件开头for(int i=0;i<5;i++){iofile.read((char *)&stud[i],sizeof(stud[i]));//读入5个学生的数据cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl; }iofile.close();return 0;
}
程序输出结果:
/*1001 Li 851003 Wang 981005 Ling 961001 Li 851002 Fun 97.51012 qianshou 1001004 Tan 76.51005 Ling 96
*/
转载于:https://www.cnblogs.com/zhezh/p/3773496.html
C++对二进制文件的操作实例相关推荐
- .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...
ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...
- python数值运算实例_Python矩阵常见运算操作实例总结
本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...
- html自定义datajs,科技常识:HTML5的自定义属性data-*详细介绍和JS操作实例
今天小编跟大家讲解下有关HTML5的自定义属性data-*详细介绍和JS操作实例 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关HTML5的自定义属性data-*详细介绍和JS操作实例 的 ...
- CentOS 配置防火墙操作实例(启、停、开、闭端口)
CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables s ...
- c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...
Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...
- php扇形分布图,PHP制作3D扇形统计图以及对图片进行缩放操作实例
这篇文章主要介绍了PHP制作3D扇形统计图以及对图片进行缩放操作实例,需要的朋友可以参考下 1.利用php gd库的函数绘制3D扇形统计图 header("content-type" ...
- legend3---lavarel多对多模型操作实例
legend3---lavarel多对多模型操作实例 一.总结 一句话总结: 在多对多模型中,增加关系表的数据 需要 弄一个和关系表一对多的模型关系 1.在lavarel关系模型中,课程和标签表是多对 ...
- 后盾网lavarel视频项目---lavarel多表关联一对多操作实例
后盾网lavarel视频项目---lavarel多表关联一对多操作实例 一.总结 一句话总结: 1.一对多中多那个部分的数据前端通过json弄到服务器 2.所有通过一操作多的时候,都要用上模型中定义的 ...
- notepad++ 操作实例
下面图解一些notepad++ 操作实例: 函数列表功能: 在菜单中选择 视图-函数列表 ,将在左侧显示类和函数列表: 文件概要: 在菜单中选择 视图-概要,显示文件的概要,字符数.单词数.行数.文档 ...
- C语言文件读写(3)-二进制文件读写操作
C语言文件读写-二进制文件读写操作 先说说什么是二进制文件,二进制文件是相对于文本文件而言的,文本文件是由一行一行的字符的有序序列组成的.二进制文件就没有行的概念了,也是由有序的字符组成的,但是在写入 ...
最新文章
- LeetCode简单题之判断国际象棋棋盘中一个格子的颜色
- 在visual studio 2010中调用ffmpeg
- 中国电子学会青少年编程能力等级测试图形化一级编程题:海底世界
- MyBatis框架学习:<select>节点中的resultType和resultMap属性
- python语言入门详解-python初级教程:入门详解
- this.parentNode.nextSibling 对div里的换行敏感
- adb 命令小集(转)
- kafka 出现Java heap space的解决方法
- vscode里面如何配置库_VSCode中C/C++库文件的配置
- STL之deque和其他容器
- HTML5 定位 —— Geolocation API的正确使用
- 我从零开始学黑莓开发的过程
- threejs第十三用 简单堆积木
- 计算机串口如何应用程序,串口通信调试软件的功能与使用方法 - 全文
- 数据挖掘与数据分析项目链家租房数据(一)数据爬虫
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
- 解决:L2TP服务器没有响应。请尝试重新连接。如果仍然有问题,请验证您的设置并与管理员联系。
- 曾国藩经典人生哲理语录
- ES6常用语法糖(附Babel配置使用方法)
- 有效控制物流运输过程成本10项措施
热门文章
- SQL Server如何清除连接过的服务器名称历史?
- 记录:Ftrace/systrace 功能使用
- html5用户输入后自动显示用户名已重复_lt;inputgt; | HTML输入框标签
- Linux音频驱动-ALSA概述
- Android 网络评分机制
- mysql cluster 1186_配置Mysql Cluster时出错Unable to connect with connect string_MySQL
- 最长上升子序列(LIS)和最长公共子序列(LCS) 模板
- shell 封装mysql查询
- ubuntu20.04下开发海康威视网络摄像头sdk(二)云台基本控制(位姿控制)
- oracle如何查不满16岁,如何在Oracle数据库中使用SQL查询获取基于年龄组的人数?...