C语言文件操作(一)

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

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

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

文件的打开和关闭

文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件的状态及文件的当前位置等)。这些信息是保存在一个结构体变量中的,这个结构体类型是有系统声明的,取名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.coloradmin.cn/o/166825.html

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

相关文章

Opengl ES之RGB转NV21

前言 在上一篇理论文章中我们介绍了YUV到RGB之间转换的几种公式与一些优化算法,今天我们再来介绍一下RGB到YUV的转换,顺便使用Opengl ES做个实践,将一张RGB的图片通过Shader 的方式转换YUV格式图,然后保存到本地。 可能有的童鞋…

SSL协议未开启是什么意思?

SSL协议未开启是指服务器中的服务没有开启或者没有SSL模块。在互联网中,数据交互传输基于http明文协议,随着互联网的不断发展,http协议展现出它的缺陷,通过http协议传输的数据容易被攻击者窃取、篡改或仿冒。为适应新形势下的网络…

【C语言进阶】文件操作详解

文章目录一.文件指针1.什么是文件指针2.如何使用文件指针二.文件操作函数1.流与文件2.顺序读写函数三.文本文件和二进制文件四.文件缓冲区一.文件指针 1.什么是文件指针 文件指针其实是文件类型指针的简称,我们常常会使用文件保存数据,而每个被使用的文…

SMILEtrack:基于相似度学习的多目标跟踪

文章目录摘要1、简介2、相关工作2.1、Tracking-by-Detection2.1.1、检测方法2.1.2、数据关联方法2.2、Tracking-by-Attention3、方法3.1、体系结构概述3.2.1、图像切片注意(ISA)块3.2.3、Q-K-V注意力块3.3、基于相似匹配级联(SMC)的目标跟踪算法4、实验结果4.1、数据集4.2、MOT…

XMind导入Markdown(利用Typora导出opml)

安装Xmind XMind 是一款非常实用的商业思维导图软件 首先,安装Xmind并打开。通过"帮助"——>“关于Xmind”,可以获取到当前的版本号为 XMind 8 Update 9 在"文件"——>“导入”,可以看到Xmind支持的导入格式仅有…

get请求和post请求

get请求 1.get请求的特点 通过一个URL来访问一个地址,就比如说127.0.0.1:7001,这种请求方式就是get请求,get请求可以直接在URL中添加参数,通过URL来传递参数。 优点:使用简单,清晰有条理,比较适合网站和…

十五天学会Autodesk Inventor,看完这一系列就够了(三),拉伸命令

众所周知,Autocad是一款用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。Autodesk Inventor软件也是美国AutoDesk公司推出的三维可视化实体模拟软件。因为很多人都熟悉Autocad,所以再学习Inventor&…

盘点2022年度A站UE神作top

A站大家都应该很熟悉了,在全球的CG行业都是属于专业化十分高的网站,平台内展示的内容包括影视、动画、娱乐等等板块,更是收录了众多大神艺术家的作品,多看看可以最直接的了解整个行业的审美趋势与技术动向。正好最近2022年A站人气…

数据结构:线性表的链式表示和实现

顺序表仅适用于不常进行插人和删除的线性表。因为在顺序存储表示的线性表中插入或删除一个数据元素,平均约需移动表中一半元素,这个缺陷是由于顺序存储要求线性表的元素依次“紧挨”存放造成的。因此对于经常需要进行插人和删除操作的线性表,就需要选择其他的存储表示方法。现在…

C进阶:文件的基础操作

本文主要讲解文件基础操作的知识。 目录 一.文件指针 二.文件的打开和关闭 1.文件的打开 打开文件我们需要使用到 fopen 函数; 注意(文件扩展名): 2.文件的关闭 三.文件的读写 1.读与写,输出与输入的概念 ​编…

VueUse(中文)——简介

一、VueUse——简介 VueUse是由Anthony Fu等大佬写的基于Vue的自定义钩子集合。类似于基于React的 ahooks功能丰富:200功能无缝迁移:适用于Vue 3和Vue2.7版本之后支持tree shaking:只引入自己需要的那部分,打包会更小还有其他的亮…

Chrome V3版开发教程使用Vue 3.x+Ant构建项目

简介 ​ Google在2023年将会遗弃V2版本,而目前在CSDN平台上的大部分Chrome插件的开发教程都是基于V2版本的,V3版本和V2的版本上还是有很大的区别,就比如manifest.json中的写法差距就很大,所以对于即将要开发Chrome插件的小伙伴来…

机器学习的相关概念与建模流程

文章目录一、机器学习简介1. 机器学习的相关定义2. 一次简单的机器学习任务:鸢尾花分类二、数据与数据集相关概念1. 数据与数据集2. 特征与标签3. 连续变量和离散变量4. 模型类型三、机器学习建模一般流程1. 提出基本模型2. 确定损失函数3. 根据损失函数性质&#x…

Servlet —— Smart Tomcat,以及一些访问出错可能的原因

JavaEE传送门JavaEE HTTPS —— HTTPS的加密方式 Servlet —— Tomcat, 初学 Servlet 程序 目录Smart TomcatSmart Tomcat 的下载配置 Smart Tomcat 插件访问出错404405500无法访问此网站Smart Tomcat 在上一篇文章中, 我们手动拷贝 war 包到 Tomcat 中的过程比较麻烦, 我们…

解析 json,整理分散数据入库

【问题】在 json 文件中有以下内容:现在需要将 json 中分散的数据整理入库。“LIST”中包含多个子孙记录,主要目标是”GROUPNAME”、”SERVICES”。“GROUPNAME”值、”SERVICES”中的键编号对应了数据库表 _groups 的 Groupname 和 ID。“SERVICES”每个…

PicGo+Gitee+Typora实现markdown图床

PicGoGitee实现markdown图床 情景概要 写博客的时候,总是需要插入图片的,图片存在本地的话上传到博客网站去就没法显示了 就算一个图一个图的复制粘贴上去,想移植到其他的博客网站,图就会失效,我们就需要图床 图床 …

系分 - 案例分析 - 项目管理

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分 - 案例分析 - 项目管理时间管理进度管理典型例题题目描述参考答案系分 - 案例分析 - 项目管理 时间管理 进度管理 ① 项目进度管理包括为管理项目按时完成所需的7个过程,具体为&#xf…

MyBatis-Plus数据安全保护(字段脱敏)

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

熟悉Spring框架?Spring容器使用流程,注解 你真的会吗?(让你一下通透~)

目录 前言 一、ApplicationContext 和 BeanFactory 的区别 二、主要工作流程 三、开发步骤 3.1、创建Maven项目 3.2、创建Spring的核心配置文件 3.3、Spring注解 3.3.1、类注解 3.3.2、五大类注解的关系 3.3.3、方法注解 3.3.4、属性注入 3.3.5、五大注解关系图&am…

【03】FreeRTOS的任务创建(静态和动态)和删除

目录 1.任务创建和删除的API函数 1.1动态创建任务函数 1.1.1实现动态创建任务流程 1.1.2任务控制块结构成员介绍 1.2静态创建任务函数 1.2.1实现静态创建任务流程 1.3任务删除函数 1.3.1删除任务流程 2.任务创建和删除&#xff08;动态方法&#xff09; 2.1宏confi…