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

news2024/10/8 12:42:55

目录

1.进行文件操作的原因

销毁的示例

2.文件的类型

1.操作文件的步骤

2.文件名

3.查看文件路径的方法

方法1

方法2

方法3

4.数据文件的介绍

举例

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

01.手动写入数据

02.用程序写入数据

②二进制形式存储

理解"不加转换"的含义


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.coloradmin.cn/o/2196365.html

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

相关文章

技术美术百人计划 | 《5.4 水体渲染》笔记

一、水体渲染的波形模拟技术-基于物理 基于物理的波形模拟方法&#xff1a; 欧拉方法&#xff08;Eulerian approaches&#xff09;[Kass 1990]拉格朗日方法&#xff08;Lagrangian approaches&#xff09; [Stam 1995]欧拉-拉格朗日混合方法&#xff08;Hybrid approaches&a…

想有独立站但是不知道怎么建站,自助/外包建站怎么选?

绝大多数外贸人和电商人都会有一个疑问&#xff0c;那就是选择自助建站还是外包建站更好——我个人觉得吧&#xff0c;这两个选择主要取决于时间&#xff0c;技术能力&#xff0c;预算还有你的具体需求。 自助建站 比如自助建站&#xff0c;它就更适合预算有限、需求较简单且…

ComfyUI增强图像细节只需要一个节点(附工作流),SD1.5、SDXL、FLUX.1 全支持,简单好用!

今天给小伙伴们介绍一个非常简单&#xff0c;但又相当好使的一个插件。 功能很简单&#xff0c;就是增加或者减少图像的细节&#xff0c;节点也很简单&#xff0c;就一个节点&#xff0c;只需要嵌入我们的 ComfyUI 的基础工作流中就可以了&#xff0c;随插随用。 而且该插件不…

GPT系列

GPT&#xff08;Generative Pre-Training&#xff09;&#xff1a; 训练过程分两步&#xff1a;无监督预训练有监督微调 模型结构是decoder-only的12层transformer 1、预训练过程&#xff0c;窗口为k&#xff0c;根据前k-1个token预测第k个token&#xff0c;训练样本包括700…

一文带大家快速上手SQLAlchemy 对数据的增删改查操作

SQLAlchemy SQLAlchemy“采用简单的Python语言&#xff0c;为高效和高性能的数据库访问设计&#xff0c;实现了完整的企业级持久模型”。SQLAlchemy的理念是&#xff0c;SQL数据库的量级和性能重要于对象集合。我们可以使用Flask和SQLAlchemy的数据库访问层&#xff08;DAL&…

别人苦画流程图一小时,我却瞬间搞定12 种图表!

在AI写作中&#xff0c;如何才能生成各种图表呢&#xff1f;例如流程图、序列图、甘特图等&#xff0c;今天就来教你如何生成。 本文阅读难度&#xff1a;★☆☆☆☆ 在商业、学术场景中&#xff0c;经常需要画流程图&#xff0c;手工画的话至少得1个小时才能完画&#xff0c…

宠物咖啡馆数字化转型:SpringBoot框架的实践

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于Spring Boot的宠物咖啡馆平台的设计与…

gstreamer 内存 alloctor 介绍

文章目录 前言一、gstreamer 默认的内存 alloctor1. gstreamer 中默认的内存 allocator 为 GST_ALLOCATOR_SYSMEM (即SystemMemory)2. GST_ALLOCATOR_SYSMEM 申请内存实例二、gstreamer 目前支持的几种内存 alloctor1.GstDmaBufAllocator1.1 GstDmaBufAllocator 介绍1.2 GstDma…

马丁代尔药物大典数据库

马丁代尔药物大典是一本由Pharmaceutical Press出版的参考书&#xff0c;拥有全球使用的近 6000 种药物和药品&#xff0c;包括超过 125,000 种专有制剂的详细信息。其中还包括近 700 篇疾病治疗评论。 它于 1883 年首次出版&#xff0c;马丁代尔包含全球临床用药信息&#xff…

pytest的基础入门

pytest判断用例的成功或者失败 pytest识别用例失败时会报AssertionError或者xxxError错误&#xff0c;当捕获异常时pytest无法识别到失败的用例 pytest的fixture夹具 pytest的参数化 #coding:utf-8 import pytestfrom PythonProject.pytest_test.funcs.guess_point import ge…

android 绘制流程

网上看了一些绘制相关的框架图&#xff0c;感觉有些不对&#xff0c;先记录下 主要是 surface 和framebuffer的关系&#xff0c;surface是用来管理数据内容并最终通过layer输出framebuffer的&#xff0c;因此应该是上下两层的管理&#xff0c;而不是平行的 二hwc合并内容&…

STM32 HAL库UART查询方式实例

本文中介绍USART编程涵盖了三种主要方法&#xff0c;详细介绍STM32F407微控制器结合HAL库&#xff0c;通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符6时&#xff0c;系统才会反馈“密码正确”的确认信息。反之&…

vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本

vscode中运行pnpm报错 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本 解决办法如下 1、用 get-ExecutionPolicy 命令在vscode终端查询状态 如果返回的是 Restricted &#xff0c;则说明是禁止的 2、用 set-ExecutionPolic…

从零开始构建:Python自定义脚本自动化你的日常任务

从零开始构建&#xff1a;Python自定义脚本自动化你的日常任务 Python 作为一种简洁且功能强大的编程语言&#xff0c;被广泛应用于各种自动化任务中。通过编写 Python 脚本&#xff0c;你可以轻松地将日常重复性工作自动化&#xff0c;例如文件操作、数据处理、网络爬虫、系统…

Mac 电脑设置键盘 Command键

Mac 电脑设置键盘 Command键 如果 mac 电脑连接的第三方键盘&#xff0c;有些键盘没有 command 按键&#xff0c;导致有些功能没有办法使用&#xff0c;比如你想复制粘贴发现也不可以。这个时候你需要设置一个按键为 command 按键。 比如上图中是把 Alt 键设置为 Command 键。 …

DHCP安装

步骤 1&#xff1a;安装DHCP服务器 在系统上安装DHCP服务。以下是安装命令&#xff1a; # 安装DHCP软件包 yum install dhcp步骤 2&#xff1a;配置DHCP服务器 安装完成后&#xff0c;需要配置DHCP服务器来绑定MAC地址和IP地址。 # 备份原始的DHCP配置文件 cp /etc/dhcp/dh…

华为 HCIP-Datacom H12-821 题库 (33)

&#x1f423;博客最下方微信公众号回复题库,领取题库和教学资源 &#x1f424;诚挚欢迎IT交流有兴趣的公众号回复交流群 &#x1f998;公众号会持续更新网络小知识&#x1f63c; 1.VLAN Pool 只要通过一个 SSID 就能够同时支持多个业务 VLAN&#xff0c;从而缩小广播域&#…

[含文档+PPT+源码等]精品大数据项目-基于python爬虫实现的大数据岗位的挖掘与分析

大数据项目——基于Python爬虫实现的大数据岗位的挖掘与分析&#xff0c;其背景主要源于以下几个方面&#xff1a; 一、大数据时代的来临 随着互联网、物联网、云计算等技术的快速发展&#xff0c;数据呈现出爆炸式增长。根据国际数据公司&#xff08;IDC&#xff09;的预测&…

送给fans的一封感谢信

引言 首先&#xff0c;十分感谢&#xff0c;这几个月里粉丝的点赞和关注。我同时手里也有很多资料。也像跟大家分享&#xff0c;促进大家一起进步。可以加我企鹅2101750384。或者绿泡泡qier3451841065 &#xff08;加好友验证的时候&#xff0c;记得填“胡萝卜不甜”&#xff0…

241006-Gradio中Chatbot通过CSS自适应调整高度

A. 最终效果 B. 参考代码 import gradio as grCSS """ .contain { display: flex; flex-direction: column; } .gradio-container { height: 100vh !important; } #component-0 { height: 100%; } #chatbot { flex-grow: 1; overflow: auto;} #tab_item_4 { …