74.【C语言】文件操作(1)

目录

1.进行文件操作的原因

销毁的示例

2.文件的类型

1.操作文件的步骤

2.文件名

3.查看文件路径的方法

方法1

方法2

方法3

4.数据文件的介绍

举例

① ASCII码的形式(即字符形式)存储

②二进制形式存储

理解"不加转换"的含义


1.进行文件操作的原因

为了存档(写入ROM),即保存重要的数据(防止突然断电丢失(为RAM的特性)或者程序退出,其内存交换操作系统,被销毁),存档可以在程序下次运行时加载(恢复)数据

RAM:随机存取存储器(Random Access Memory)

销毁的示例

x86+debug环境下

int main()
{int a = 1;return 0;
}

 执行完int a = 1;后,打开内存窗口,输入&a

0af6630882364d3d84335c0d326f2a3c.png

0x008FFE50为a存放的地址

在Cheat Engine下,挂载程序,搜素字节数组01 00 00 00 cc cc cc cc 78 fe 8f 00

注意关掉快速扫描

单击首次扫描

5fe358225e664cbda28d38230b5ee3a5.png

可以查到两个结果8a5f69537a724d56a36490288de19594.png

随便选一个,右击浏览相关内存区域

93e9fd818ced46108ec939cff00007a2.png

注意看a的值

13a66db9498f473aae32d3a3f16b9265.png

待程序退出后再次调试程序,查看

eeb1a0c90f184a7cb75cfcb2adf0e5b9.png

01 00 00 00被00 00 00 00覆盖(空间被回收)

2.文件的类型

这里讲的文件指的是放在磁盘/U盘/软盘/...里的文件

分为程序文件(*.c,*.cpp,*.obj,*.exe......)和数据文件,本文谈论的是数据文件

1.操作文件的步骤

打开文件(fopen函数)-->操作(读取(输出)数据(fread函数)或写入(输入)数据)文件(fwrite函数)-->关闭文件(fclose函数)

2.文件名

文件名=文件路径+文件名主干+文件后缀

如 C:\Program Files\1.exe

指的是C盘的Program Files文件夹下(路径)有一个1(文件名主干).exe(后缀)文件

文件标识常被称为文件名

3.查看文件路径的方法

方法1

win11,右击文件,选择属性

d94a0349882b48d3a6a81763a32e66bd.pnge1a93b9217c24c8eb8208d961f9d2661.png

方法2

win11,右击文件,选择复制文件地址,粘贴到任意输入框中查看

5b3380d469f541f2ae516f0303115f24.png

方法3

下图单击空白处

f499b5bf434d450f9e984d761239118d.png

注意:C:\Program Files\1.exe含的是反斜杠

4.数据文件的介绍

数据文件被称为文本文件或者二进制文件

数据在内存中以二进制的形式存储,如果不加转换的输出到外存的文件中,就是二进制文件

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件

举例

例如存储数字5000,有两种形式存储,

① ASCII码的形式(即字符形式)存储

ASCII码为的是能在屏幕上显示字符

查ASCII码表可知:字符5对应十六进制的35,字符0对应十六进制的30
cba2c42abbc84e308d17c805aef82d72.png

01.手动写入数据

如果将5000写入记事本后,用HxD.exe打开

1cf264dfae1e40668444b80af8f6536a.png

35 30 30 30占4个字节

02.用程序写入数据

#include <stdio.h>
int main()
{int a = 5000;FILE * pf = fopen("a.bin", "wb");//wb:write byte//二进制的形式写到文件中fwrite(&a, 4, 1, pf);//4代表以int形式存储,1代表写入1次fclose(pf);pf = NULL;return 0;
}

将生成的exe文件和新建的a.bin文件(里面没有任何内容)放到一起,接着在VS中添加现有项

5d556935846b4dfab97b5128b02a1446.png

之后运行

87767134237747da9514125f1c388981.png

点Yes

47850b6cc3d349aebfe2e302c5ee7175.png

数据不加以转换,由于VS以小端序存储,故写入88 13 00 00而不是00 00 13 88

备注:a.bin存储在

268c9c92698b420b8b72e39f5a306ae4.png

②二进制形式存储

打开计算器,转到程序员模式

DWORD下,b23dcc990ff04025a4260f53e7baf438.png

其中0001 0011 1000 1000-转换为十六进制->13 88(大端序存储)占2个字节

理解"不加转换"的含义

将"1.进行文件操作的原因"下面的代码用VS保存为exe文件,用记事本打开查看,发现是乱码

a0bf5430a3e54db88767a2ea56f849c3.png

形成乱码的原因是a614c50cd8e04f059dd431e6996e17a7.png,记事本将exe文件加以转换,用ANSI编码的形式呈现;

用HxD.exe查看

282f75ff3dc84fe782e66d84cc6727c7.png

如果不加转换,就是以二进制的形式呈现(将二进制转换为十六进制是为了方便阅读)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven加载依赖成功但是引入import不了包,注解报错

突然就复现不出来了&#xff0c;奇了怪了&#xff0c;简单说一下吧&#xff0c;就是模块里引入了SpringBoot Test那个依赖然后&#xff0c; 这个地方是显示引入成功的&#xff0c;但是 这个包下没有&#xff0c;导致我SpringBootTest一直出不来&#xff0c;就找不到这个包下的注…

Qt事件——鼠标事件

通过label来显示各种事件 鼠标按下事件 //按下显示坐标 void MyLabel::mousePressEvent(QMouseEvent * ev) {int i ev->x();int j ev->y();//判断按下的鼠标键位if (ev->button() Qt::LeftButton) {qDebug() << "LeftButton";}else if (ev->bu…

Elasticsearch学习笔记(六)使用集群令牌将新加点加入集群

随着业务的增长&#xff0c;陆续会有新的节点需要加入集群。当我们在集群中的某个节点上使用命令生成令牌时会出现报错信息。 # 生成令牌 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node出现报错信息&#xff1a; Unable to create enrollment…

开源商城系统crmeb phpstudy安装配置

BOSS让我最快时间部署一套开源商场系统&#xff0c;今天就以crmeb为例。 快速部署在linux中我会首选docker&#xff0c;因为我要在windows中部署&#xff0c;本文就选用phpstudy集成环境做了。 什么是crmeb 我从官网摘点&#xff1a; CRMEB产品与服务 CRMEB通过将CRM&#x…

NFT Insider #151:The Sandbox 推出 Alpha 第4季;腾讯或将收购育碧

市场数据 加密艺术及收藏品新闻 Beeple 将于 11 月在南京德基美术馆举办个人首展 著名数字艺术家 Beeple 近日在X平台发布视频&#xff0c;宣布将于 2024 年 11 月 14 日在南京德基美术馆举办个人首次展览&#xff0c;名为《Beeple&#xff1a;来自合成未来的故事》。该展览将…

Django的请求与响应

Django的请求与响应 1、常见的请求2、常见的响应3、案例 1、常见的请求 函数的参数request是一个对象&#xff0c;封装了用户发送过来的所有请求相关数据。 get请求一般用来请求获取数据&#xff0c;get请求也可以传参到后台&#xff0c;但是传递的参数显示在地址栏。 post请求…

[自然语言处理]RNN

1 传统RNN模型与LSTM import torch import torch.nn as nntorch.manual_seed(6)# todo:基础RNN模型 def dem01():参数1&#xff1a;input_size 每个词的词向量维度&#xff08;输入层神经元的个数&#xff09;参数2&#xff1a;hidden_size 隐藏层神经元的个数参数3&#xff1a…

物联网:一种有能力重塑世界的技术

物联网&#xff08;IoT&#xff09;近年来对我们的日常生活产生了如此积极的影响&#xff0c;以至于即使是不懂技术的人也开始相信它所带来的便利以及敏锐的洞察力。 物联网是一场数字技术革命&#xff0c;其意义甚至比工业革命更为重大。物联网是仍处于起步阶段的第四次工业革…

前端开发笔记--html 黑马程序员2

文章目录 前端常用标签一、标题标签二、段落标签和换行标签和水平线标签三、文本格式化标签![请添加图片描述](https://i-blog.csdnimg.cn/direct/87583fa23fe04229b016912051f3fc45.png)四、盒子标签五、图像标签六、连接标签七、注释和特殊字符 八、表格标签的基本使用九、列…

自动化运维:提升效率、降低风险的利器

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

如何批量从sql语句中提取表名

简介 使用的卢易表 的提取表名功能&#xff0c;可以从sql语句中批量提取表名。采用纯文本sql语法分析&#xff0c;无需连接数据库&#xff0c;支持从含非sql语句的文件文件中提取&#xff0c;支持各类数据库sql语法。 特点 快&#xff1a;从成百个文件中提取上千个表名只需1…

离岗睡岗预警系统 值班室离岗识别系统Python 结合 OpenCV 库

在众多工作场景中&#xff0c;存在着一些特殊岗位&#xff0c;这些岗位对于人员的专注度和警觉性有着极高的要求。然而&#xff0c;离岗睡岗现象却时有发生&#xff0c;给工作的正常开展和安全保障带来了严重的威胁。本文将深入探讨特殊岗位离岗睡岗的危害&#xff0c;以及如何…

Ubuntu安装Apache教程

系统版本&#xff1a;Ubuntu版本 23.04 Ubuntu是一款功能强大且用户友好的操作系统&#xff0c;而Apache是一款广泛使用的Web服务器软件。在Ubuntu上安装Apache可以帮助用户搭建自己的网站或者进行Web开发。为大家介绍如何在Ubuntu上安装Apache&#xff0c;并提供详细的教程和操…

【HarmonyOS NEXT】实现页面水印功能

关键词&#xff1a;鸿蒙、水印、Watermark、页面、触摸问题 注&#xff1a;本期文章同样适用 OpenHarmony 的开发 在app开发过程中时常会出现敏感信息页面&#xff0c;为保护信息安全和及时的数据追踪&#xff0c;通常会采用给页面加水印的形式&#xff0c;那么本期文章会介绍…

【NLP自然语言处理】探索注意力机制:解锁深度学习的语言理解新篇章

目录 &#x1f354; 注意力机制介绍 1.1 注意力概念 1.2 注意力计算规则 1.3 常见的注意力计算规则 &#x1f354; 什么是注意力机制 &#x1f354; 注意力机制的作用 &#x1f354; 注意力机制实现步骤 4.1 步骤 4.2 代码实现 &#x1f354; 小结 学习目标 &#x1…

C++面试速通宝典——24

452. Linux进程地址空间 文本段&#xff1a;包含程序的可执行代码初始化数据段&#xff08;数据段&#xff09;&#xff1a;包含已初始化的全局变量和静态变量。未初始化数据段&#xff08;BSS段&#xff09;&#xff1a;包含未初始化的全局变量和静态变量。堆&#xff1a;动态…

计算机网络(十一) —— 数据链路层

目录 一&#xff0c;关于数据链路层 二&#xff0c;以太网协议 2.1 局域网 2.2 Mac地址 2.3 Mac帧报头 2.4 MTU 三&#xff0c;ARP协议 3.1 ARP是什么 3.2 ARP原理 3.3 ARP报头 3.4 模拟ARP过程 3.5 ARP周边问题 四&#xff0c;NAT技术 4.1 NAT技术背景 4.2 NAT转…

C++11--右值引用

1.引用 右值引用是在C11中所引进的&#xff0c;在前面&#xff0c;我们已经了解并使用过了引用&#xff0c;引用的作用就是给某一个变量取别名&#xff0c;但实际上&#xff0c;我们使用的引用是左值引用&#xff0c;而我们现在要了解的是与左值引用相对应的右值引用。 无论左…

【原创】java+springboot+mysql在线课程学习网设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

目标检测——YOLO11算法解读

作者&#xff1a;Ultralytics公司 代码&#xff1a;https://github.com/ultralytics/ultralytics YOLO系列算法解读&#xff1a; YOLOv1通俗易懂版解读、SSD算法解读、YOLOv2算法解读、YOLOv3算法解读、YOLOv4算法解读、YOLOv5算法解读、YOLOR算法解读、YOLOX算法解读、YOLOv6算…