游戏筑基开发之二进制文件操作的那点事儿(C语言)
游戏筑基开发之二进制文件操作的那点事儿(C语言)
1.二进制写文件
int main()
{//二进制文件的写// 写入/读出的真实长度 = 写入元素的大小(字节数) * 写入元素的个数FILE *pFile = fopen("1.exe", "wb");int a[10] = { 1,2,3,4,5,6,7,8,9,10 };//fwrite(a,sizeof(int),10,pFile);fwrite(a, 1, sizeof(int) * 10, pFile);fclose(pFile);pFile = NULL;return 0;
}
2.二进制读文件
int main()
{int a[10] = { 0 };//二进制文件的读操作FILE *pFile = fopen("1.exe", "rb");// 写入/读出的真实长度 = 写入元素的大小(字节数) * 写入元素的个数//fread(a,sizeof(int),10,pFile);int ab = fread(a, 1, sizeof(int) * 10, pFile);fclose(pFile);return 0;
}
3.二进制模式下的其它文件函数
int main()
{//1.exe中保存:1~10,10个整数FILE *pFile = fopen("1.exe", "rb");//ftell 获取当前句柄在 文件中的位置 的偏移printf("%d\n", ftell(pFile));int a = 0;fread(&a, sizeof(int), 1, pFile);//1fseek(pFile, -4, SEEK_END);fread(&a, sizeof(int), 1, pFile);printf("%d %d\n", ftell(pFile), a);//40 10return 0;
}
4.配置/日志文件思想(利用结构体写入和读出二进制文件举例)
数据结构如下:
struct tagNode001
{int type;int x;int y;
};struct tagNode002
{struct tagNode001 node001;//写文件的时候写入整个结构体大小,包括1024*sizeof(int)char name[1024];
};struct tagNode003
{struct tagNode001 node001;int m;int z;
};
4.1 结构体写入二进制文件
int main()
{FILE *pFile = fopen("1.bin", "wb");struct tagNode002 node002 = { 1,1,1,"hello World" };struct tagNode003 node003 = { 2,2,2,2,2 };//序列化fwrite(&node002, 1, sizeof(struct tagNode002), pFile);fwrite(&node003, 1, sizeof(struct tagNode003), pFile);fclose(pFile);pFile = NULL;return 0;
}
4.2 结构体取出二进制文件
int main()
{FILE *pFile = fopen("1.bin", "rb");//检测头4个字节,判断类别int type;fread(&type, sizeof(int), 1, pFile);struct tagNode002 node02;struct tagNode003 node03;//重置句柄,从头开始fseek(pFile, -4, SEEK_CUR);//类似于碰撞检测if (type == 1){//反序列化fread(&node02, 1, sizeof(struct tagNode002), pFile);fread(&node03, 1, sizeof(struct tagNode003), pFile);}fclose(pFile);return 0;
}
游戏筑基开发之二进制文件操作的那点事儿(C语言)相关推荐
- 一文了解游戏美术开发流程,以及可能遇到的问题
想了解典型的游戏资产开发工作流吗?一个团队的游戏美术流程取决于几个因素,包括游戏开发工作室类型.正在开发的游戏类型和开发团队成员的数量等.继续往下阅读,你能了解游戏美术开发流程.所使用的工具,以及可能 ...
- 1个人70万行代码,20年持续更新,这款游戏号称开发到死,永不停更
梦晨 博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这是一款「开发到死」,「永不停更」的游戏. 兄弟两人,一人开发,一人剧情,共同维持了这款游戏近20年. 现在的玩家刚刚打开它,往往会发 ...
- Java在游戏服务器开发中的应用
Java在游戏服务器开发中的应用 width="22" height="16" src="http://hits.sinajs.cn/A1/we ...
- 趣说游戏AI开发:曼哈顿街角的A*算法
前言 请叫我标题党!请叫我标题党!请叫我标题党!因为下面的文字既不发生在美国曼哈顿,也不是一个讲述美国梦的故事.相反,这可能只是一篇没有那么枯燥的关于算法的文章.A星算法,这个在游戏寻路开发中难免会用 ...
- 趣说游戏AI开发:曼哈顿街角的A*算法 1
0x00 前言 请叫我标题党!请叫我标题党!请叫我标题党!因为下面的文字既不发生在美国曼哈顿,也不是一个讲述美国梦的故事.相反,这可能只是一篇没有那么枯燥的关于算法的文章.A星算法,这个在游戏寻路开发 ...
- [读书笔记] 设计模式与游戏完美开发
最近在看<设计模式与游戏完美开发>,文章将记录一些要点和一些设计模式实现 GoF定义的23种设计模式及应用场景 系统设计可以采用的设计模式:单例.状态(场景切换).外观(保证高内聚).中介 ...
- 【转载】浅析游戏引擎开发
浅析游戏引擎开发 1 引言 电脑游戏作为一种娱乐方式越来越为人们所接受.即时通讯开发对于电脑游戏来说, 游戏引擎是用于控制游戏功能的 主程序, 如接受玩家控制信息的输入, 选择合适的声音以合适的音量播 ...
- python3小游戏源代码_Python入门塔防小游戏,开发步骤和源码,带你轻松学python...
在上一篇文章中,我介绍了有关python入门塔防小游戏的一些功能,下面我继续讲解有关这个小游戏的大致开发步骤. 开发工具还是: Python版本:3.6.4 相关的模块有:pygame模块,以及一些p ...
- 关于2048小游戏的开发感想
最近通过python实现2048小游戏的开发,在开发过程中遇到了一些问题,发现了自己的不足之处,特此进行简单的反思. 一.状态机: 状态机是表示有限个状态以及这些状态之间转移和动作等行为的数学模型,状 ...
- 【游戏后端】游戏服务器端开发的一些建议(转载)
摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结.第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一 ...
最新文章
- python求5_python(五)——运算符,小整数对象池
- BZOJ1076 [SCOI2008] 奖励关
- hdu hide handkerchief
- Parent Equipment 和IBASE relationship创建时的检查逻辑
- IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build
- 总结下用Vue.js和webpack遇到的问题
- Android 内存泄漏分析指北
- linux服务器配置jdk1.8
- SCUT - 240 - 宝华的文件系统 - 模拟
- python词云图背景_python词云图之WordCloud
- 数据分析方法论(6种方法,8个思路)
- 服务器c盘临时文件在哪里,excel在c盘哪个文件夹|excel临时文件位置
- 中软防水坝 怎么卸载_卸载中软防水墙软件
- C专家编程 第11章 你懂得C,所以C++不再话下 11.1 初识OOP
- 弘辽科技:拼多多活动价格建议价格太低了怎么办?
- 【Redis】RedisCluster 批量删除key
- 不可替代的测试人:一文解释探索性测试是什么
- 2018/09/29Web前端学习第五课
- 如何退出python命令行
- 中国电信骨干网网络介绍