75.【C语言】文件操作(2)
承接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函数执行后,要手动将野指针置空
相关文章:
75.【C语言】文件操作(2)
承接74.【C语言】文件操作(1)文章 目录 5.详细阐释文件的打开和关闭 1.流 2.标准流 3.文件指针 FILE 两层含义 附:FILE的头文件 4.操作文件的步骤 1.fopen函数 编辑 简写的全称查询 输入&输出的含义 2.fclose函数 3.代码示例 补充:绝对路径和相对路径 注意…...
Redis 使用记录
封装调用redis类 import redis from conf.config import RedisConfigclass RedisConfig:redis_json config_data[redis_config]redis_pwd env.get(project_name).get(pwd)host redis_json.get("host")dialog_states_db redis_json.get("dialog_states_db&q…...
IDEA实用小技巧
1. IDEA代码提示忽略大小写 打开设置,点击Editor–>General–>Code Completion ,然后将右侧的Match Case前面的选框去掉勾选。 2. 快速查找接口RestfulToolkitX插件 该插件可以快速查找接口(快捷键为CTRL\) 还会在侧边栏…...
PEI转染试剂对血清的敏感性研究
在细胞生物学和基因工程领域,聚乙烯亚胺(PEI)作为一种常用的转染试剂,广泛应用于基因的递送。然而,PEI转染试剂对血清的敏感性一直是研究的热点问题。转染过程中,血清作为培养基的成分之一,可能…...
手机怎样改网络ip地址?内容详尽实用
随着网络技术的发展,更改手机IP地址已成为一种常见需求。本文将详细介绍如何在不同网络环境下更改手机IP地址,包括移动网络和WiFi网络,以及同时适用于两种网络的方法,内容详尽实用,干货满满。 一、适用于移动网络&…...
使用Pybind11,Python调用C++动态库
最近学习了一下pybind11,使用python来调用C动态库的模式,在某些场景下有用,这里做一个记录。 环境准备 安装python,我这里安装的是3.12版本 下载Pybind11库,这是一个仅包含头文件的轻量级库,使用起来非常…...
提交gitlab
1.gitlab上新建项目 2.git clone url把新项目拉下来 3.git add ./* 把需要提交的文件全部新增 4.git config --global user.email “yetuo.zhuqxsk.local” 身份认证一下 5.git commit -m “asr语音识别-对外服务” 提交 6.git push origin 推送进去 git init git add . git c…...
金慧-综合管理信息系统 LoginBegin.aspx SQL注入复现
0x01 产品描述: 金慧-综合管理信息系统(以下简称“金慧综合管理系统”)是上海金慧软件有限公司基于多年行业系统研发和实施经验,为各类企业量身定制的一套综合性管理解决方案。该系统旨在通过信息化手段,提升企业的管理…...
RHCSA的学习(4)
一、vi编辑器 (1)为什么学vi? 所有的Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在; 很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的 crontab, visudo, edquota 等指令)&#x…...
linux-二进制工具
二进制查看工具: 1、hexdump -n length 只格式化输入文件的前length个字节 -C 输出规范的十六进之和ASCII码 -b 单字节八进制显示 -c 单字节字符显示 -d 双字节十进制显示 -o 双字节八进制显示 -x 双字节十六进制显示 -s 从偏移量开始输出 2、od(octal dump) 用于显示文件内…...
《数据结构》学习系列
系列文章目录 一、绪论 二、线性表、链表 三、堆栈、队列 四、数组 五、字符串 六、树...
沂机管理系统/data/Ajax.aspx接口存在SQL注入漏洞
漏洞描述 沂机管理系统/data/Ajax.aspx接口存在SQL注入漏洞,攻击者可以获取服务器权限 漏洞复现 body"后台管理系统演示版" POC GET /data/Ajax.aspx?methodlog_list&page1&limit20&fkey1&fdate12024-10-0100%3A00%3A00&fdate2…...
JVM 内存模型与垃圾回收过程详解
JVM 内存模型与垃圾回收过程详解 文章目录 JVM 内存模型与垃圾回收过程详解1. JVM内存分区1.1 具体分区1.2 JVM内存分区的必要性 2. 垃圾回收2.1 CMS垃圾回收器2.2 G1垃圾回收器2.3 JVM垃圾回收从新生代到老年代 1. JVM内存分区 1.1 具体分区 Java虚拟机(JVM&#…...
python:PyPDF2 将多个图片转换为pdf,再合并成一个PDF文件
承上一篇:java:pdfbox 3.0 去除扫描版PDF中文本水印 # 导出扫描版PDF文件中每页的图片文件 java -jar pdfbox-app-3.0.3.jar export:images -prefixtest -i your_book.pdf 导出 Writing image: test-1.jpg Writing image: test-2.jpg Writing image: t…...
Python精选200Tips:186-190
针对序列(时间、文本)数据的网络结构 续 P186-- 双向LSTM(Bidirectional Long Short-Term Memory 2005)(1)模型结构说明(2)创新性说明(3)示例代码:IMDB电影评论情感分析 …...
C、C++常用数据结构:链表
文章目录 基本概念链表的创建链表结点定义链表创建 链表遍历链表释放链表查找链表删除链表插入测试用例 基本概念 参考:链表基础知识详解(非常详细简单易懂)-CSDN博客 链表是一种线性存储结构,链表在物理存储上是非连续的…...
【devops】devops-ansible之剧本变量使用
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》从问题中去学习k8s 《docker学习》暂未更…...
《Linux从小白到高手》理论篇:一文概览常用Linux重要配置文件
List item 今天继续宅家,闲来无事接着写。本篇是《Linux从小白到高手》理论篇的最后一篇了。本篇集中介绍所有常用的Linux重要配置文件。 用这个命令可以查看配置文件所在的位置:如上图 locate "*.conf" "*.ini" "*.cfg&quo…...
采购管理流程:掌握最后阶段的关键要点
采购管理流程是企业运作中的核心职能之一,涵盖了获取商品和服务的一系列步骤,旨在以高效率和经济效益的方式进行。深入理解该流程的每个环节极为关键,特别是最后阶段,这可确保所有采购活动的圆满完成以及与供应商维持良好关系。 …...
cherry-markdown开源markdown组件详细使用教程
文章目录 前言开发定位目标调研技术方案前提工作量安排数据库表设计实现步骤1、引入依赖2、实现cherry-markdown的vue组件(修改上传接口路径)3、支持draw.io组件4、支持展示悬浮目录toc前端使用:编辑状态使用cherry-markdown的vue组件前端使用…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
