相关动态
一文教会你C语言FILE【从0到1之C语言的文件操作】
2024-11-10 17:57

在我们的学习中,文件操作是被我们忽略,但用的时候又记忆模糊的内容,今天我带领大家来学习一下。

一文教会你C语言FILE【从0到1之C语言的文件操作】

我之前也写过一篇,不过没这么详细,指路->《》,可查漏补缺。

我们在程序中怎么把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。

这就涉及到了的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据

库等方式。

使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。

磁盘上的文件是文件。

但是在程序设计中,我们一般谈的文件有两种:、(从文件功能的角度来分类的)。

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

后缀为.exe)。

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

或者输出内容的文件。

本篇讨论的是。

以前我们学习C语言所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。

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

的就是磁盘上文件。

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

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

例如: c:code est.txt

为了方便起见,文件标识常被称为文件名。

缓冲文件系统中,关键的概念是“”,简称“”。

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名

,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统

声明的,取名FILE.

例如,VS2022编译环境提供的 stdio.h 头文件中有以下的文件类型申明

不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息

使用者不必关心细节。

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

下面我们可以创建一个FILE*的指针变量:

定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变

)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联

的文件。

比如

打开方式如下

实例代码

下面我将举例带你们体会怎么运用

scanf--从键盘上读取格式化数据 适用于:stdin

printf--把数据(输出)到屏幕上 适用于:stout

fscanf--针对所有输入流的格式化的输入函数 适用于:stdin 打开的文件

fprintf--针对所有输出流的格式化的输出函数 适用于:stout 打开的文件

sscanf--从一个字符串中,还原出一个格式化的数据

sprintf--把格式化的数据,存放在(转换成)一个字符串

根据数据的组织形式,数据文件被称为或者。

一个数据在内存中存储,如果是字符则一律以ASCII形式存储,数值型数据可以用ASCII形势存储也可以用二进制形式存储。

比如:整数10000

如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节,而

二进制形式输出,则在磁盘上只占4个字节。

先在解决方案中右击添加test.txt文件

右击test.txt文件

选择 二进制编辑器 确定即可

结果

原理,故看起来相反

:在文件读取过程中,。

而是用于当文件读取结束的时候,判断是读取失败(返回0)结束,还是遇到文件尾结束(返回非0值)。

ferror:返回值为

文本文件读取是否结束,判断返回值是否为 ( fgetc ,或者 ( fgets

例如

  • fgetc 判断是否为 .

  1. 如果成功,则返回读取的字符(提升为int值)。

返回类型是int,以适应表示失败的特殊值EOF:

  1. 如果位置指示符在文件末尾,该函数返回EOF并设置stream的EOF指示符(feof)。

c. 如果发生其他读取错误,该函数也返回EOF,但设置其错误指示器(ferror)。

  • fgets 判断返回值是否为 .

  1. 如果成功,函数返回str。

  1. 如果在试图读取字符时遇到了文件结束符,则设置eof (feof)。

  1. 如果这是在读取任何字符之前发生的,则返回的指针是null指针(str的内容保持不变)。

  1. 如果发生读错误,则设置错误指示器(ferror),并返回null指针(但str指向的内容可能已经改变)。

二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。

例如

  • fread判断返回值是否小于实际要读的个数。

文本文件举例

二进制文件举例

ANSIC 标准采用“”处理的数据文件的

所谓。

从内存向磁盘输出数据会先送到内存中的缓冲区,缓冲区后才一起送到磁盘上。

如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓

冲区(充满缓冲区,然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。

缓冲区的大小根据决定的。

一个多月没有写博客记录了,因为实在是写得太慢了,以后会继续坚持的

希望和大家一起进步

点个赞再走吧~~~🐧 🐧 🐧

    以上就是本篇文章【一文教会你C语言FILE【从0到1之C语言的文件操作】】的全部内容了,欢迎阅览 ! 文章地址:http://dh99988.xhstdz.com/quote/63271.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://dh99988.xhstdz.com/mobile/ , 查看更多   
发表评论
0评