基于结构体的二进制文件读写
基于结构体的二进制文件读写
- 项目介绍
- 工程创建
- 结构体的创建
- 写二进制文件
- 结果
- 读二进制文件
- 结果
- 参考文献
项目介绍
本次设计是为了提高读写二进制文件的效率,以约定的结构体形式进行读写操作,避免了一个字节一个字节的多次写入读取操作,并且能以特定的结构读取到二进制数据流的文件,即以某种特定的协议进行读写操作。
工程创建
本次是对读写的操作的认识,则创建的工程为控制台应用。
结构体的创建
分别以short、int、long long类型数据进行连续数据100次的顺序写入
#pragma pack(1) //字节对齐typedef struct
{short b;int c;long long d;
}inputInfo;
写二进制文件
#include <QtCore/QCoreApplication>
#include "inputInfo.h"
#include <QFile>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int count = 1; //计数值//初始化结构体inputInfo myInputInfo ={1,2,3};QFile file("test.dat");if (file.open(QIODevice::WriteOnly|QIODevice::Truncate)){while((count++)<=100){file.write((char*)&myInputInfo,14); //14为结构体的字节长度,可以用sizeof()算出myInputInfo.b += 3;myInputInfo.c += 3;myInputInfo.d += 3;}}file.close();
}
结果
读二进制文件
#include <QtCore/QCoreApplication>
#include "inputInfo.h"
#include <QFile>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//读二进制文件inputInfo myInputInfo;QFile file("test.dat");if (file.open(QIODevice::ReadOnly)){while(!file.atEnd()){file.read((char*)&myInputInfo,14);qDebug()<<myInputInfo.b<<myInputInfo.c<<myInputInfo.d; //输出调试}}file.close();return a.exec();
}
结果
参考文献
[1] 陆文周. 魅力.实践.发现–QT5开发及实例(第三版)[M]. 电子工业出版社, 2017.
基于结构体的二进制文件读写相关推荐
- c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现
宋福英 摘 要: 中国高校为保证学生信息安全,各分院的学生信息都在一个相对封闭的闭环内共享.中国高校在校生人数逐年递增,给高校的信息管理带来不小压力.C语言兼具高级语言和汇编语言的特点,简洁.紧凑. ...
- 学生信息管理系统(C语言实现)——基于结构体和文件
目录 题目描述 源码详解 完整源码 题目描述 学生信息管理系统用来管理学生信息,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一个学生信息管理系统,其至少 ...
- c++ 结构体初始化_单片机C语言 - 基于结构体的面向对象编程技巧
单片机C语言 - 基于结构体的面向对象编程技巧 一.面向对象 面向对象是软件开发方法,是相对于面向过程来讲的.通过把数据与方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式 ...
- C语言项目实战:24点游戏计算器(基于结构体、指针、函数、数组、循环等知识点)
文章目录 C语言项目实战:24点游戏计算器(基于结构体.指针.函数.数组.循环等知识点) 前言:24点游戏计算器的规则如下 一.项目的创建标 1.选择项目 2.输入项目名称和路径 3.创建头文件Mai ...
- 关于结构体数据的读写
最近在工作中遇到一种直接按照结构体读写数据的情况,之前没有遇到记录下来! 结构体: typedef struct CAMERAPOINT {float point_X;float point_Y;fl ...
- C语言 基于结构体的程序设计(PTA)
一.实验目的 1.掌握C语言中结构体类型的定义和结构体变量的定义和引用. 2.掌握用结构指针传递结构数据的方法. 二.实验内容 1. 计算职工工资 给定N个职员的信息,包括姓名.基本工资.浮动工资和支 ...
- C语言文件读写(结构体文件)
有时候,我们需要将输入的数据存储起来,这时候就需要用到文件,对于C语言而言,文件的读写有多种方式,下面主要是结构体文件的读写,例如student.dat(第一列是学号,第二列是姓名) 20180001 ...
- QT 使用数据流方式QDataSteam读写结构体数据
文章目录 一.QT中保存单个变量到文件中 二.使用memcpy读写结构体数据 一.QT中保存单个变量到文件中 在QT中使用QDateStream进行数据流文件读写,保存数据(QT帮助中的例子). Ex ...
- java开发C编译器:结构体的解析和执行
用java开发C语言编译器 结构体是C语言中,最为复杂的原生数据结构,它把多种原生结构结合在一起,形成一个有特点含义的数据结构,要实现一个完整的C语言编译器或解释器,就必须要拥有对结构体的解析能力,本 ...
最新文章
- git config设置用户名_一个神奇的工具,实现多人协作,git常用命令详解
- windows无法安装到这个磁盘,windos必须安装在格式化为NTFS的分区
- Shodan新手入坑指南
- 一门从业4年都没能用上的优化技术
- 雷军:小米开启“重新创业” ;Debian GNU/Linux诞生27周年|极客头条
- Jquery 1.4.2 animate的BUG
- java可不可以写挂_用Java怎么写呀???我怕是java要挂了,太艰难了
- Autodesk AutoCAD 2022 产品系列已发布(附下载)
- matlab鲍威尔算法,鲍威尔法matlab程序
- 读《三体》差点污了我的三观
- Java中9种常见的CMS GC问题分析与解决
- Win 10 深度隐藏文件夹命令
- sort()与拉姆达表达式
- 谷歌邮箱无法登录问题
- 收藏夹吃灰了:GitHub 上值得收藏的100个精选前端项目!
- git Pull Request 是什么意思?
- 网络攻击机制和技术发展综述
- 蓝牙遥控小车(详细免费教程)
- Android手机文件及文件夹目录详解
- Androidstudio通过无线连接进行调试
热门文章
- c#与java之比较(转自Jack.Wang's home)
- 5位数的数字黑洞是多少_每日一题[491]数字黑洞--Kaprekar常数
- PMP读书笔记(第6章)
- mongoose 通过账号密码连接 Error: Password contains an illegal unescaped character
- 西电计算机科学院实践中心,计算机基础教学实验中心
- swagger2如何测试单个文件或者多文件上传
- bootstrapTable基础操作
- Android中设置输入法为数字输入
- 实验6 实践课程中的程序
- php strpos与strrpos,PHP开发之 strpos stripos strrpos strripos的区别