C语言学习(心得分享):文件的操作

本章节学习了文件操作的内容,现在来梳理一下所有的核心知识点。

1.为什么使用文件

我们在编写并运行程序时,向内存申请空间来存放需要的数据,而当我们关闭程序的时候,申请的空间又还给了操作系统,随之存放的数据也被销毁,无法得到长期的保存。

因此,我们可以通过创建文件的方式,将数据写入硬盘,从而实现数据存储的永久性。

2.什么是文件

文件是一种存储数据的类型,它将数据存储在硬盘当中,当我们需要使用的时候,可以打开文件获取。       

文件主要包括两种形式,程序文件和数据文件。程序文件是一种可执行操作的文件,如我们编写的以.c为后缀的C语言文件。而数据文件就是存放数据的文件,主要是起到一个仓库的作用

文件名主要由三部分组成,路径 名称 后缀。

路径:是该文件在硬盘中的一个位置的描述,便于我们来寻找文件        

名称:就是我们在创建文件时给它的命名,用来区分各种文件,便于我们识别文件的内容

后缀:文件的类别,不同的后缀对应的文件的效果不同

3.文件的打开和关闭

我们在编写C程序时,如何来使用文件呢?

核心的流程就是: 打开文件        对文件进行操作        关闭文件,这三个步骤。

使用文件的底层原理简化为,我们在内存中使用文件流来操作硬盘中的文件。

对应的打开和关闭文件要使用到两个C语言给我们提供的库函数:fopen 和 fclose

fopen函数,其参数是要打开的文件名,打开的形式。返回值是一个文件指针(该指针执行文件流在内存中的空间,即我们可以通过这个指针来操作文件)类型是FILE*        其功能就是以我们选择的方式来打开文件:这里常用的方式主要为 w:写        r:读        wb:二进制写        rb:二进制读。

fclose函数,其参数我们要关闭的文件对应的文件指针,功能是关闭对应的文件。

而对文件进行操作就涉及到下一个知识点,文件的读写。

4.文件的读写

就是将要存储的数据写入文件,并在需要时从文件中读取数据来使用。

而C语言给我们提供了4组库函数来让我们读写文件

分别是 1.fgetc和fputc        2.fgets和fputs        3.fprintf和fscanf        4.fwrite和fread

它们都可以实现对文件的读写,只是读写的方式有所差异。

1.以单个字符读写        2.以行读写        3.以格式化读写        4.以二进制读写

文件的随机读写

1.意义: 我们在读取文件时,不想要按照顺序结构来读取,想要从数据的某一个位置来读取数据,就需要用到随机读写的技术。

2.三个函数:
 
fseek 参数:1.要读取的文件指针 2.距离锚点位置的偏移量 3.锚点位置(起点   操作点    结束点)
如: 文件中有 abcdefgh 一串字符,顺序结构的输出则为 abcdefgh ,而起点是 a 结束点是 h,则b的距离起点的偏移量为1,距离结束点的偏移量为-6,
而操作点是指,在读写的过程中,指针会移动位置,所以当前指针所在的位置就是操作点。
功能:从一个指定的位置开始读取文件。

ftell 返回值类型: int     参数:1.文件指针
功能:确定当前的指针位置相较起始位置的偏移量。

rewind 参数:1.文件指针
功能:使文件指针返回起始点的位置。
 

5.文本文件和二进制文件

文本文件和二进制文件,是文件记录的两种格式。
简单来讲,一般我们可以看懂的文件就是文本文件,而我们看不懂的就是二进制文件。
文本文件:文件以文本的形式来存储。
二进制文件:文件以二进制的形式来存储。

以二进制来存储文件有时能起到节省空间的效果,所以这也是它存在的意义。

6.文件缓冲区

为了提高文件读写的效率,所以出现了文件缓冲区。

我们在写入文件时,并非直接从内存向硬盘写入,而是先将数据放入文件缓冲区,待数据存满后,在一次性存入硬盘中,这样避免了频繁调用操作系统,提高了效率。当然我们遇到紧急的文件时,可以同对应的函数直接将文件写入硬盘。

7.文件读取结束的判定

两个函数
ferror    参数:文件指针
功能:判定文件读取结束是否是因为意外错误而结束。

feof    参数:文件指针
功能:判定文件读取结束是否是因为文件内容读取完毕。

判定方法
fgetc :当返回值为EOF时,则读取结束。

fgets :当返回值为空指针时,则读取结束。

fread :当返回的整数小于参数规定的读取个数时,则读取结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值