有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++对二进制文件的操作实例相关推荐

  1. .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...

    ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...

  2. python数值运算实例_Python矩阵常见运算操作实例总结

    本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...

  3. html自定义datajs,科技常识:HTML5的自定义属性data-*详细介绍和JS操作实例

    今天小编跟大家讲解下有关HTML5的自定义属性data-*详细介绍和JS操作实例 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关HTML5的自定义属性data-*详细介绍和JS操作实例 的 ...

  4. CentOS 配置防火墙操作实例(启、停、开、闭端口)

          CentOS 配置防火墙操作实例(启.停.开.闭端口):   注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service   iptables s ...

  5. c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...

    Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...

  6. php扇形分布图,PHP制作3D扇形统计图以及对图片进行缩放操作实例

    这篇文章主要介绍了PHP制作3D扇形统计图以及对图片进行缩放操作实例,需要的朋友可以参考下 1.利用php gd库的函数绘制3D扇形统计图 header("content-type" ...

  7. legend3---lavarel多对多模型操作实例

    legend3---lavarel多对多模型操作实例 一.总结 一句话总结: 在多对多模型中,增加关系表的数据 需要 弄一个和关系表一对多的模型关系 1.在lavarel关系模型中,课程和标签表是多对 ...

  8. 后盾网lavarel视频项目---lavarel多表关联一对多操作实例

    后盾网lavarel视频项目---lavarel多表关联一对多操作实例 一.总结 一句话总结: 1.一对多中多那个部分的数据前端通过json弄到服务器 2.所有通过一操作多的时候,都要用上模型中定义的 ...

  9. notepad++ 操作实例

    下面图解一些notepad++ 操作实例: 函数列表功能: 在菜单中选择 视图-函数列表 ,将在左侧显示类和函数列表: 文件概要: 在菜单中选择 视图-概要,显示文件的概要,字符数.单词数.行数.文档 ...

  10. C语言文件读写(3)-二进制文件读写操作

    C语言文件读写-二进制文件读写操作 先说说什么是二进制文件,二进制文件是相对于文本文件而言的,文本文件是由一行一行的字符的有序序列组成的.二进制文件就没有行的概念了,也是由有序的字符组成的,但是在写入 ...

最新文章

  1. LeetCode简单题之判断国际象棋棋盘中一个格子的颜色
  2. 在visual studio 2010中调用ffmpeg
  3. 中国电子学会青少年编程能力等级测试图形化一级编程题:海底世界
  4. MyBatis框架学习:<select>节点中的resultType和resultMap属性
  5. python语言入门详解-python初级教程:入门详解
  6. this.parentNode.nextSibling 对div里的换行敏感
  7. adb 命令小集(转)
  8. kafka 出现Java heap space的解决方法
  9. vscode里面如何配置库_VSCode中C/C++库文件的配置
  10. STL之deque和其他容器
  11. HTML5 定位 —— Geolocation API的正确使用
  12. 我从零开始学黑莓开发的过程
  13. threejs第十三用 简单堆积木
  14. 计算机串口如何应用程序,串口通信调试软件的功能与使用方法 - 全文
  15. 数据挖掘与数据分析项目链家租房数据(一)数据爬虫
  16. Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
  17. 解决:L2TP服务器没有响应。请尝试重新连接。如果仍然有问题,请验证您的设置并与管理员联系。
  18. 曾国藩经典人生哲理语录
  19. ES6常用语法糖(附Babel配置使用方法)
  20. 有效控制物流运输过程成本10项措施

热门文章

  1. SQL Server如何清除连接过的服务器名称历史?
  2. 记录:Ftrace/systrace 功能使用
  3. html5用户输入后自动显示用户名已重复_lt;inputgt; | HTML输入框标签
  4. Linux音频驱动-ALSA概述
  5. Android 网络评分机制
  6. mysql cluster 1186_配置Mysql Cluster时出错Unable to connect with connect string_MySQL
  7. 最长上升子序列(LIS)和最长公共子序列(LCS) 模板
  8. shell 封装mysql查询
  9. ubuntu20.04下开发海康威视网络摄像头sdk(二)云台基本控制(位姿控制)
  10. oracle如何查不满16岁,如何在Oracle数据库中使用SQL查询获取基于年龄组的人数?...