C语言文件操作(一)

news/2024/10/30 23:18:35/
我们之前写程序,得到运行结果,退出运行,运行结果就不见了,因为运行的结果放到了内存中,退出程序的时候数据就会消失,等下一次运行又要重新输入数据,这样就显得很麻烦。

那么我们如何保存之前的运行结果呢

将运行的结果放到磁盘中,然后我们的运行结果就会保存,我们下一次运行程序,如果要使用之前的结果,将磁盘的数据读取到程序中,这样就使得程序更加持久。这样的操作就是叫文件操作

文件的打开和关闭

文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件的状态及文件的当前位置等)。这些信息是保存在一个结构体变量中的,这个结构体类型是有系统声明的,取名FILE

我们每打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构变量,并且补充信息,使用不必关心细节。

一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。

FILE指针变量的创建

定义pf是一个指向FILE类型数据的指针变量。pf指向文件信息区,通过pf来访问文件信息区内容,然后就可以访问文件内容了。也就是说通过文件指针变量能够找到与它相关联的文件。

文件的打开和关闭

文件在读写之前需要打开文件,在使用结束之后应该关闭文件。

在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针与文件的关系。

ANSIC规定使用fopen函数来打开文件。fclose函数来关闭文件。

fopen函数

假如打开文件失败怎么办

我们建这个文件

我们怎么写内容到文件和读文件的内容呢

文件的顺序读写

我们一个一个来使用这些函数

fgetc函数

通过解释可以看出

fgetc是读一个字符,那么我们怎么读里面所有字符呢

应该考虑到循环了

我们读取字符失败返回EOF

这样的操作也不怎么好,后面我们会介绍一个函数专门读字符串的

fputc函数

我们也可以写一堆字符

fgets函数

假如内容为

我们的读取结果是什么

fgets函数是文本行读取,只能读一行的数据,第一行只有字符a,所以我们只能读取到a

fputs函数

fscanf函数

了解fsanf函数,我们可以通过类比的方法

fscanf函数与scanf函数的参数差异就是多了一个结构体类型指针

我们怎么使用这个函数呢

fscanf叫格式化输入函数,可以读取数据

fscanf读取100到a中

将hello1231.123当成了字符串读取到arr中

换行默认字符串结束,所以3.14读取到f中

之后打印出来,可以看出fscanf是按顺序读取的,以换行为结束标志

fprintf函数

fprintf函数叫格式化输出函数

它怎么实现的,我们类比printf函数

好像差不多,和fscanf函数与scanf对比一样

我们通过例子来看看

fprintf把数据写入文件

fread函数

fread函数得功能是二进制输入,即读取二进制数

fwrite函数

好像fwrite里面的参数贺fread函数一样哎,我们怎么去使用

fwrite是写二进制到文件里面

我们缕一缕里面参数

sscanf函数

我们怎么去使用sscanf函数,它与scanf函数有什么区别

scanf函数是从键盘获取数据,sscanf是从“2022helloworld”获取数据,按数顺序获取

与scanf函数一样读取字符串时遇到空格结束

sprintf函数

怎么使用

printf函数将数据读取到屏幕,sprintf函数读取到arr字符数组内


下期预告

文件的随机读写

文本文件和二进制文件

文件读取结束的判定

文件缓冲区


http://www.ppmy.cn/news/12735.html

相关文章

鉴源论坛 · 观通丨轨交系统安全性设计

作者 | 刘艳青 上海控安安全测评中心安全测评部测试经理 版块 | 鉴源论坛 观通 引语:第一篇对轨交信号系统从铁路系统分类和组成、城市轨交系统分类和组成、城市轨交系统功能、城市轨交系统发展方面做了介绍,第二篇从信号基础出发,讲述了信…

MyBatis-Plus数据安全保护(加密解密)

项目创建POM依赖 <dependency><!--MyBatis-Plus 企业级模块--><groupId>com.baomidou</groupId><artifactId>mybatis-mate-starter</artifactId><version>1.2.8</version> </dependency> <!-- https://mvnrepository…

价值创造链路及经营计划

“价值创造过程最主要的环节是建立链接&#xff0c;北京万柳书院在网上热议&#xff0c;其背后是人与人的大量链接&#xff0c;近期热议的湖南卫视春晚亦如是&#xff0c;这种链接为价值的设计、沟通、传递创造条件&#xff1b;企业以客户为中心设计产品&#xff0c;往大了说是…

linux挂载新磁盘

一、查看磁盘挂载状态&#xff1a; fdisk -l df -h 二、为其中一个磁盘创建新的分区&#xff0c;参考&#xff1a; linux用fdisk创建分区,在Linux下用fdisk创建分区_weixin_39968410的博客-CSDN博客 sudo fdisk /dev/nvme0n1 1. 创建主分区&#xff1a; -----------------…

工作的同时,我也在这里做副业

文章目录一、什么是独自开&#xff1f;二、独自开能给我们带来什么利益&#xff1f;三、如何使用独自开&#xff1f;3.1、用户任务报价步骤13.2、用户任务报价步骤2四、未来的愿景一、什么是独自开&#xff1f; 独自开&#xff0c;全称独自开发一套系统&#xff0c;是基于商品…

洛谷 225153 数字组合

1.数字组合 题目链接&#xff1a;数字组合 - 洛谷 标签&#xff1a;背包问题 注意点&#xff1a;将dp[0]初始化为1 AC代码&#xff1a; #include<iostream> using namespace std;int dp[100005];int main() {int n,m,t;cin>>n>>m;dp[0]1;for(int i1;i&l…

基于Leaflet的VideoOverlay视频图层叠加实战

前言在基于二维的场景中&#xff0c;也许会遇到以下的需求。在某交通路口或者重要的监控点&#xff0c;需要将实时或者录制的视频信息叠加在地图上。更有甚者&#xff0c;随着设备通讯方式的增强&#xff0c;无人机等设备可以采集实时数据&#xff0c;实时回传到控制终端&#…

蚂蚁智能内容合规产品,提供一站式营销合规管控解决方案

随着互联网服务的不断深化&#xff0c;产品营销的形式从传统文本、长图文&#xff0c;增加到短视频、直播等新媒介形态&#xff0c;展现形式愈加丰富的同时&#xff0c;也为营销宣传内容合规审核带来了诸多难题。如何解决与日俱增的审核量与合规审核人员有限之间的矛盾&#xf…