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

【C语言】熟悉文件基础知识

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~


文件

为了数据持久化保存,使用文件,否则数据存储在内存中,程序退出,内存回收,数据就会丢失。

程序设计中,文件分两种:程序文件、数据文件

文件名

唯一的文件标识,包含3部分:文件路径+文件名主干+文件后缀  (例:c:\code\test.txt  )

文本文件和二进制文件

文本文件是数据以ASCII字符的形式存储的文件

二进制文件是数据在内存中以二进制的形式存储的文件

字符⼀律以ASCII形式存储数值型数据既可以⽤ASCII形式存储,也可以使⽤⼆进制形式存储。

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

测试代码

#include<stdio.h>
int main()
{int a = 10000;                  FILE* pf = fopen("test.txt", "wb");fwrite(&a, 4, 1, pf);//以二进制的形式写入文件fclose(pf);pf = NULL;return 0;
}

我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。
C程序针对⽂件、画⾯、键盘等的数据输⼊输出操作都是通过流操作的。
⼀般情况下,我们要想向流⾥写数据,或者从流中读取数据,都是要打开流,然后操作。

标准流

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

  • stdin 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。
  • stdout 标准输出流,⼤多数的环境中输出⾄显⽰器界⾯,printf函数就是将信息输出到标准输出流中。
  • stderr 标准错误流,⼤多数环境中输出到显⽰器界⾯。

这是默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。
stdin、stdout、stderr 三个流的类型是: FILE * ,通常称为⽂件指针。
C语⾔中,就是通过 FILE * 的⽂件指针来维护流的各种操作的。

文件指针

每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名 字,⽂件状态及⽂件当前的位置等)。这些信息是保存在⼀个结构体变量中的。该结构体类型是由系统声明的,取名FILE.(不需要关注文件内部细节)

每当打开⼀个⽂件的时候,系统会根据⽂件的情况⾃动创建⼀个FILE结构的变量,并填充其中的信 息,使⽤者不必关⼼细节

文件的打开和关闭

⽂件在读写之前应该先打开⽂件,在使⽤结束之后应该关闭⽂件。
在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE* 的指针变量指向该⽂件,建立了指针和⽂件的关系。
ANSIC规定使⽤ fopen 函数来打开⽂件, fclose 来关闭⽂件。

fopen打开文件

fclose关闭文件

代码操作

用只读形式,没有创建文件

绝对路径

比如我想在桌面上创建一个文件

相对路径

  • . 表示当前目录
  • . . 表示上一级路径
  •  没写 . 表示默认当前路径

http://www.lryc.cn/news/310586.html

相关文章:

  • 信息系统安全与对抗-作业2
  • 【软考高项】【计算专题】- 5 - 进度类 - 横道图/甘特图
  • Ubuntu20.04使用XRDP安装原生远程桌面
  • uniapp:启动图 .9png 制作教程
  • NVMFS5113PLWFT1G汽车级功率MOSFET 60V 10A/64A满足AEC-Q101标准
  • 设计表时,如何选择正确的数据类型
  • iZotope RX 7 Advanced:音频修复与编辑的巅峰之作
  • Mac 制作可引导安装器
  • 深入了解 JavaScript 混淆加密和环境检测
  • 可让照片人物“开口说话”阿里图生视频模型EMO,高启强普法
  • 全国产飞腾E2000Q +复旦微FPGA的轨道交通、电力解决方案
  • 292.【华为OD机试】跳马问题(广度优先搜索(BFS)JavaPythonC++JS实现)
  • Qt 中Qwidget相关属性
  • matplotlib散点图
  • day32贪心算法 part02
  • 判断docker 镜像启动成功 shell脚本
  • Android AppCompatActivity 方法详解
  • [FastDDS] 基于eProsima FastDDS的移动机器人数据中间件——介绍与准备工作
  • 4. 编写app组件
  • 经典的算法面试题(1)
  • 微信小程序 --- mobx-miniprogram miniprogram-computed
  • 【HTML】HTML基础2(一些常用标签)
  • Jmeter 安装
  • 控制液压比例插装阀放大器
  • [设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
  • nftables 测试一拒绝所有流量
  • 练习 3 Web [ACTF2020 新生赛]Upload
  • Linux中docker项目提示No such file or directory
  • PyTorch 中的 apply
  • 张宇30讲学习笔记