75.【C语言】文件操作(2)

news2024/11/20 21:32:47

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

目录

5.详细阐释文件的打开和关闭

1.流

2.标准流

3.文件指针

FILE 两层含义

附:FILE的头文件

4.操作文件的步骤

1.fopen函数

​编辑

简写的全称查询

输入&输出的含义

2.fclose函数

3.代码示例

补充:绝对路径和相对路径

注意


5.详细阐释文件的打开和关闭

1.流

事实:程序的数据需要输出到各种外部设备,也需要从外部设备获取数据

为了方便程序员对各种设备进行方便的操作,引入一个概念:流,把流想象成流淌着字符的河

C语言对数据的输入和输出都是按照"流"来进行的

数据输出-->流(中转站)-->各种外设(显存,文件,网络......)

数据读取<--流(中转站)<--各种外设(显存,文件,网络......)

2.标准流

向屏幕输入数据:,putchar,printf;从键盘输入数据:getchar,scanf

这些函数的实现依赖"流"

C程序在启动时默认打开了3个标准

stdin 标准输入流(standard input),用于从键盘输入数据

stdout 标准输出流(standard output),用于输出至显示器界面(写入显存)

stderr 标准错误流(standard error),用于打印错误信息

三个流的类型是: FILE * ,通常称为文件指针(全称:文件类型指针)

3.文件指针

FILE 两层含义

FiLE:每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如

文件的名字,文件状态及文件当前的位置等),这些信息是保存在一个结构体变量中的,该结构体

类型是由系统声明的,名为FILE

备注:有关结构体的内容见下面4篇

20.【C语言】初识结构体(重要)

48.【C语言】结构体补充

63.【C语言】再议结构体(上)

64.【C语言】再议结构体(下)

FLIE*:那么这样FILE*为结构体指针,指向文件信息区

文件指针<-->文件信息区<-->文件

通过文件指针变量能够间接找到与它关联的文件

附:FILE的头文件

(VS2013)

struct _iobuf 
{
	char* _ptr;
	int _cnt;
	char* _base;
	int _flag;
	int _file;
	int _charbuf;
	int _bufsiz;
	char* _tmpfname;
};
typedef struct _iobuf FILE;

struct _iobuf重命名为FILE

4.操作文件的步骤

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

1.fopen函数

声明:FILE * fopen ( const char * filename, const char * mode );

格式:FILE* p = fopen("文件路径", "mode");

mode为文件打开模式

简写的全称查询

r:read; w:write; a:append; rb:read binary wb:write binary ab:append binary

#include <stdio.h>
int main()
{
	FILE* p = fopen("a.txt", "r");
	if (p == NULL)
	{
		perror("fopen");
		return 1;//错误返回
	}
	fclose(p);
	p == NULL;//将野指针置空
	return 0;
}
输入&输出的含义

输入:将内存中的数据写入文件; 输出:将文件中的数据写入内存

可以用Cheat Engine软件或VS的反汇编来查看具体的执行细节

2.fclose函数

声明:int fclose ( FILE * stream );

格式:fclose(指针);

3.代码示例

#include <stdio.h>
int main()
{
	FILE* p = fopen("a.txt", "r");
	if (p == NULL)
	{
		perror("fopen");
		return 1;//错误返回
	}
	fclose(p);
	p = NULL;//将野指针置空
	return 0;
}

这里的a.txt为相对路径(此处指在可执行文件的当前目录下有一个a.txt文件)

补充:绝对路径和相对路径

绝对路径:从盘符出发的路径

例如   C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe

相对路径:

.表示当前目录,而..表示上一级目录

例如 ..\..\a.txt

注意
1.fopen函数

1.如果打开成功,则返回文件信息区的起始地址;如果打开失败则返回空指针,因此fopen函数执行后要判断指针是否为空

2.为了防止写绝对路径时将"\+后面的内容"解释为转义字符,将\写成\\

正确示范:C:\\note\\123.txt   (C:\note\123.txt会被解释成\n换行符以及\123八进制数)

3.如果打开的文件已经存在,fopen函数会自动将文件清空

2.fclose函数

fclose函数执行后,要手动将野指针置空

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

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

相关文章

No.14 笔记 | XSS漏洞:原理、类型与防御策略

一、HTML和JavaScript基础 1. HTML基础 HTML概述&#xff1a;超文本标记语言&#xff0c;用于实现页面跳转和显示数据。结构标准&#xff1a;包括<!doctype html>声明文档类型&#xff0c;<html>根标签&#xff0c;<head>头部标签和<body>主体标签等。…

Markdown 语法详解大全(超级版)(四)——Markdown 使用 Emoji 表情 (附:表情符号简码列表)

Markdown 语法详解大全(超级版)&#xff08;四&#xff09; ——Markdown 使用 Emoji 表情 &#xff08;附&#xff1a;表情符号简码列表&#xff09; 本文目录&#xff1a; 一、复制和粘贴表情符号 二、使用表情符号简码 三、表情符号简码列表 本系列文章&#xff1a; Ma…

阿里云CDN设置阀值的指南

在如今这个信息爆炸的时代&#xff0c;网站的访问速度和用户体验变得尤为重要。阿里云CDN&#xff08;内容分发网络&#xff09;作为一种高效的解决方案&#xff0c;帮助用户加速网站内容的分发。然而&#xff0c;如何合理设置CDN的阀值&#xff0c;确保资源的高效利用&#xf…

【有啥问啥】深度探索:COG Agent与GUI Agent的工作原理与实施策略

深度探索&#xff1a;COG Agent与GUI Agent的工作原理与实施策略 在当今的数字化时代&#xff0c;图形用户界面&#xff08;GUI&#xff09;已经成为人机交互的主流。然而&#xff0c;传统依赖于文本或代码解析的GUI自动化方法在面对复杂多变的界面时常常显得力不从心。无论是…

工业交换机的安全机制

在当今信息技术迅速发展的时代&#xff0c;工业交换机作为网络通信的重要设备&#xff0c;其安全机制愈发受到重视。工业交换机的安全性不仅关乎企业的信息保护&#xff0c;更是整个工业网络运行稳定性的基石。为了确保数据传输的安全和网络的可靠性&#xff0c;现代工业交换机…

linux程序说明

Linux 文件和目录管理命令 文件和目录 cd 切换目录 cd [目录路径]&#xff1a;进入指定的目录。 cd ~ 进入当前用户的主目录。 cd - 返回上一次所在的目录。 cd .. 进入上级目录。 cd / 进入根目录。 cd ../.. 进入上上级目录。 cd /目录路径&#xff1a;进入指定的根目录中…

如何防止图纸外泄?图纸防泄密的六个方法(图纸安全管理措施)

图纸&#xff0c;作为企业技术和设计的结晶&#xff0c;一旦外泄&#xff0c;可能造成不可估量的损失。 如何有效防止图纸外泄&#xff0c;成为企业在信息安全管理中的重要环节。 下面我们将通过六个有趣又实用的方法&#xff0c;帮助你轻松实现图纸的安全管理。 1. 安企神系…

人脸表情行为识别系统源码分享

人脸表情行为识别系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

PCL 计算点云AABB包围盒(惯性矩阵)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 计算AABB包围盒 2.1.2 可视化点云与AABB包围盒 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长…

从0打造本地聊天机器人:如何实现大模型流式输出?OpenAI+Ollama 实战

尽管有了 GPU 加持&#xff0c;推理速度依然很慢&#xff0c;怎么搞&#xff1f; 流式输出&#xff01; 相比全部生成后再输出&#xff0c;流式输出生成一句就播报一句&#xff0c;大大减少了用户的等待时间。 主流大模型推理 API 包括&#xff1a; OpenAI 格式&#xff1a…

史上最浅显易懂Python教程,138页学习笔记,35个知识点一文掌握

这份笔记的目标是为了给出一份比较精炼&#xff0c;但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单&#xff0c;但是措辞比较罗嗦&#xff0c;而且一个语法点往往散落在多个章节&#xff0c;不方便读者总结。 我在做笔记时&#xff0c;将一个知识点…

数字王国里的虚拟人――技术、商业与法律解读

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【海拥导航】&#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/HDQZJEQiCJb9cFi&#x1f485; 想寻找共同学习交流&#xff0c;摸鱼划水的小伙伴&#xff0c;请点击【全栈技…

用友crm客户关系管理config/fillbacksettingedit.php接口存在SQL注入漏洞

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 用友crm客户关系管理简介 微信公众号搜索:南风漏…

LangChain4j系列—Java AI框架LangChain4j快速入门

一、概述 LangChain4j于2023年初在ChatGPT的炒作中开始开发。我们注意到&#xff0c;与众多的Python和JavaScript LLM库和框架相比&#xff0c;缺少Java对应项&#xff0c;我们必须修复它&#xff01;尽管“LangChain”是以我们的名义命名的&#xff0c;但该项目融合了LangCha…

UEFI学习笔记(十):系统表与ACPI表的遍历

一、概述 在 UEFI 系统表中&#xff0c;有几个关键的表用于提供系统信息、服务和硬件抽象。这些表可以通过 EFI_SYSTEM_TABLE 访问&#xff0c;常见的 UEFI 系统表如下&#xff1a; 1、EFI_SYSTEM_TABLE (系统表) EFI_SYSTEM_TABLE 是一个指针&#xff0c;包含多个服务和系统…

电力电子技术03 AC-DC整流器(1)---AC-DC整流器概述

一、AC-DC整流器概述 1.AC-DC整流器简介 AC-DC整流器是将交流电&#xff08;AC&#xff09;转换为直流电&#xff08;DC&#xff09;的电力电子设备&#xff0c;它在许多电子设备中至关重要&#xff0c;尤其是需要稳定直流电源的应用场景&#xff0c;如电源适配器、电脑电源、…

VSCode中添加自定义代码片段

目录 VSCode中添加自定义代码片段 基本操作 辅助工具 VSCode中添加自定义代码片段 基本操作 打开Visual Studio Code设置&#xff0c;选择Snippets 在弹出的窗口中选择新建全局片段文件 如果只想为当前工作目录设置片段文件则选择第二个 输入新全局片段文件的名称 这个文件…

Redis学习(十二)连接数不足报错及分析修复:ERR max number of clients reached.

目录 一、问题介绍二、问题分析2.1 redis-cli 登录2.2 info clients 查看连接数情况2.3 client list 查看具体连接情况2.4 分析连接空闲时长2.5 client list 根据客户端IP统计连接数 三、问题结论和解决3.1 问题结论&#xff1a;3.2 解决方案①&#xff1a;优化程序3.3 解决方案…

execl表格批量换行问题

我拿到了一份execl表格。需要用代码去读每一行。 当我点击wps中的换行的时候。显示已经换行了。 但是我双击图表的时候&#xff0c;显示换行并没有生效。 还是在cell单元格里有很多行。 此时&#xff0c;ctrlf打开替换按钮。 选择替换的内容&#xff1a;altenter 按住alten…

轨迹预测升级:如何让自动驾驶汽车从意图与风险中真正读懂“人心”?

导读&#xff1a; 本篇文章提出了一种基于联合预测的轨迹预测模型&#xff0c;包括交互模块、意图模块和风险评估模块。实验结果表明&#xff0c;本文模型在正常场景中保持高准确性&#xff0c;并且展现了在事故场景中应对具有挑战性或者突发情况的潜力。©️【深蓝AI】编译…