文件的操作

本文介绍了C语言中使用文件进行数据持久化的必要性,详细讲解了文件的定义、分类(程序文件和数据文件)、文件名结构、打开和关闭文件、顺序和随机读写、文件结束判定以及文件缓冲区的工作原理。
摘要由CSDN通过智能技术生成

我们为什么要使用文件?

        在我们在写程序时,我们输入的数据在程序运行结束后将不会被记录保存,那么这时我们可以使用C语言中的文件操作将我们所需要的数据永久的保存在磁盘上,做到数据持久化,以便于下次我们不必再重复输入数据,可以直接在文件中读取数据。

目录

一、什么是文件

二、文件名

三、文件的打开和关闭

四、文件的顺序读写

 五、文件的随机读写

六、文件读取结束的判定

七、文件缓冲区

一、什么是文件
存放在磁盘上的文件就是文件

但是在程序设计中我们一般将文件分为两类:程序文件和数据文件(按文件的功能分类)。

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

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

        本博客主要讲述的是数据文件的读写操作。

        在没有文件操作的C语言终端程序中,数据的输入和输出都是以终端为对象的,即从终端的键盘输入数据,运行结果在屏幕上显示。但是在有文件操作的程序中,我们可以将终端的键盘输入的数据保存在磁盘中,或者将磁盘中的文件数据都取到程序内存中使用。

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

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

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

        例如:D:\study\编程\C语言\学习\文件操作\test.c

                > \之前的内容都是表示文件所在的路径,比如此test.c文件在D盘的study目录下的:编程目录下的:C语言目录下的:学习目录下的:文件操作目录下的位置。

                > 此文件的文件名主干是test

                > 此文件的文件名后缀是c

三、文件的打开和关闭
        在我们读写文件时需要先建立一个文件信息区来记录所要使用文件的各种数据(如文件的名字、文件状态及文件所在的当前位置等),而在C语言中记录这些状态的类型为文件指针:

        1.文件指针
                缓冲文件系统中,关键的概念是"“文件类型指针",简称“文件指针"。

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

在vs2022当中FILE是被这样定义的:

      ----->不同的C编译器的FILE类型包含的内容不完全相同,但是⼤同⼩异。
      ------>每当打开⼀个⽂件的时候,系统会根据⽂件的情况⾃动创建⼀个FILE结构的变量,并填充其中的信 息,使⽤者不必关⼼细节。
      ------>般都是通过⼀个FILE的指针来维护这个FILE结构的变量,这样使⽤起来更加⽅便。
接下来我们创建一个FILE变量:
⽂件的打开和关闭
------>⽂件在读写之前应该先打开⽂件,在使⽤结束之后应该关闭⽂件。
------>在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了 指针和⽂件的关系。
ANSI C 规定使⽤ fopen 函数来打开⽂件, fclose 来关闭⽂件。
下面是文件打开的模式:
看看下面的示例:
四.文件的读写
  1.顺序读写
       读写文件我们需要怎么做呢?——————>首先我们需要知道怎么去读写文件,所以接下来就不得不提到我们读写文件的小帮手啦!(顺序读写函数)
    1.fgetc使用方法
2.fputc使用方法
  3.fgets的使用方法
   4.fputs的使用方法
5.fscanf的使用
6.fprintf的使用
7.fread
8.fwrite
五.文件的随机读写
六.文件结束的判定
1. 被错误使⽤的 feof
牢记:在⽂件读取过程中,不能⽤feof函数的返回值直接来判断⽂件的是否结束。
feof 的作⽤是:当⽂件读取结束的时候,判断是读取结束的原因是否是:遇到⽂件尾结束。
1. ⽂本⽂件读取是否结束,判断返回值是否为 EOF fgetc ),或者 NULL fgets
例如:
fgetc 判断是否为 EOF .
fgets 判断返回值是否为 NULL .
2. ⼆进制⽂件的读取结束判断,判断返回值是否⼩于实际要读的个数。
例如:
fread判断返回值是否⼩于实际要读的个数。
接下来以文本文件为例:
七.文件缓冲区
ANSIC 标准采⽤“缓冲⽂件系统” 处理的数据⽂件的,所谓缓冲⽂件系统是指系统⾃动地在内存中为 程序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓 冲区,装满缓冲区后才⼀起送到磁盘上。如果从磁盘向计算机读⼊数据,则从磁盘⽂件中读取数据输 ⼊到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的⼤⼩根据C编译系统决定的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值