当前位置: 首页 > news >正文

C语言(长期更新)第22讲:文件操作(一)

  C语言(长期更新)第22讲

文件操作(一)

     跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力博主主页:潼心1412o-CSDN博客


目录

  C语言(长期更新)第22讲

文件操作

知识回顾

22.1 为什么使用文件

22.2 什么是文件

22.2.1 程序文件

22.2.2 数据文件

22.2.3 文件名

22.3 二进制文件和文本文件

22.4 文件的打开和关闭

22.4.1 流和标准流

22.4.1.1 流

22.4.1.2 标准流

22.4.2 文件指针

22.4.3 文件的打开和关闭


知识回顾

上节课我们学习了动态内存管理,今天我们来学习文件操作,坐稳了,我们发车,gogogo,出发喽!


22.1 为什么使用文件

没有文件,我们写的程序数据储存在电脑内存中,程序退出,内存回收,数据就丢失了

想要将数据长久保存,就可使用文件

22.2 什么是文件

磁盘(硬盘)上的文件

程序设计中的文件有两种:程序文件、数据文件(文件功能的角度分类)

22.2.1 程序文件

包括源程序文件(后缀.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)

22.2.2 数据文件

文件的内容不一定是程序,而是程序运行时读写的数据。如程序运行时,需要从中读取或输出数据的文件。

本章探讨的是数据文件 

在以前各章所处理数据的输⼊输出都是以终端为对象的,即从终端的键盘输⼊数据,运⾏结果显⽰到显⽰器上。

其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使⽤,这⾥处理的就是磁盘上⽂件

22.2.3 文件名

一个文件要有唯一的文件标识,便于用户的识别和引用

文件名包含三部分:文件路径+文件名主干+文件后缀

例如 c:\code\test.txt

为方便,文件标识被称作文件名

22.3 二进制文件和文本文件

根据数据的组织形式,数据文件分为文本文件和二进制文件

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

如果要求在外存上以ASCII码值的形式存储,那就是文本文件

一个数据在文件中如何存储呢?

字符一律是以ASCII码值进行存储的,数值型数据几可以用ASCII形式存储,也可以使用二进制形

式存储

如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占⽤5个字节(每个字符⼀个字节),⽽⼆进制形式输出,则在磁盘上只占4个字节

在VS上打开二进制文件

22.4 文件的打开和关闭

22.4.1 流和标准流

22.4.1.1 流

程序设计领域一个抽象化的概念

程序数据需要输出到外部设备,也需要从外部设备获取数据

不同外部设备输入输出操作不同

为方便程序员对各种设备进行操作,抽象出流的概念

C程序针对⽂件、画⾯、键盘等的数据输⼊输出操作都是通过流操作的。

⼀般情况下,我们要想向流⾥写数据,或者从流中读取数据,都是要打开流,然后操作

22.4.1.2 标准流

C语⾔程序在启动的时候,默认打开了3个流

  • stdin标准输入流
  • stdout标准输出流
  • stderr标准错误流

默认打开三个流,我们就可以使用printf,scanf函数直接进行输入输出操作

C语言通过FILE*的文件指针进行流的维护

22.4.2 文件指针

文件类型指针

每个被使用的文件都会在内存中开辟文件信息区,用于存放文件的相关信息

这些信息保存在一个结构体变量中

该结构体变量由系统声明,取名为FILE

文件指针的创建如下

22.4.3 文件的打开和关闭

文件在使用前要打开,使用完要关闭

编写程序时,打开文件同时,会返回一个FILE*的指针变量指向该文件

相当于建立了指针和文件的关系

ANSI C规定使用fopen打开文件,fcolse关闭文件

下⾯都是⽂件的打开模式

下节课我们一个个讲


 好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~​​​ 

博主主页:潼心1412o-CSDN博客

http://www.dtcms.com/a/395721.html

相关文章:

  • 财务管控——解读79页集团财务业务管控方法及信息化应用案例【附全文阅读】
  • 火语言RPA:解锁开发者工作流的“自动化密码”
  • 用户行为数据可视化
  • jdbc-数据更新与删除
  • 【GitLab】GitLab-CI(shell方式)入门配置
  • Python入门 | 三个if语句程序作业和基础语法笔记
  • BeanPropertyRowMapper
  • 深入解析Java中String的不可变性
  • windows-安装kafka并启动
  • linux 驱动私有数据
  • 信息系统监理师软考备考指南:组织协调与沟通管理专题精讲
  • 【开题答辩全过程】以 JAVA农产品销售系统为例,包含答辩的问题和答案
  • Python 网络爬虫生态全景综述
  • MCP— Model Context Protocol(模型上下文协议)
  • 解决ubuntu无法连接上security.ubuntu.com:80 (185.125.190.81)的问题
  • SHAP分析 | MATLAB实现XGBoost极限梯度提升树多输入单输出回归预测+SHAP可解释分析分析(预测新数据,多指标评价)
  • 磁共振成像原理(理论)11:梯度回波 (Gradient Echoes)
  • odoo18全局菜单搜索
  • langchain链中的高级组件
  • 鸿蒙:使用animation或animateTo实现图片无限旋转效果
  • 02)阿里 Arthas(阿尔萨斯)开源的 Java 诊断工具原理分析、JVM动态加载“代理程序“(Agent) 的机制、vm.loadAgent原理
  • [学习笔记][机器学习-周志华] 第1章 绪论
  • Node.js面试题及详细答案120题(111-120) -- 进阶与扩展篇
  • 鞋底布线前传:CAD三维建模如何实现精准凸起设计
  • 华为无线网络技术基础
  • Django 模型与 ORM 全解析(二):数据库操作
  • Python 2025:AI与自动化运维的融合新纪元
  • MySQL 核心函数与约束详解
  • 设计模式简要
  • 服务扩容与容量评估手册