相信学习C语言的同学,对"文件"这一节都有一种熟悉的陌生感,几乎翻书时次次看见它,等到老师讲它时,却又迷迷糊糊的听不懂,接下来,让我们利用这篇博客,来加深对它的认识。
一、文件的定义
从文件功能方向来分类,文件分为数据文件和程序文件,它们都是储存在硬盘上的。而数据文件又被分为文本文件和二进制文件。所谓文本文件,就是文件以ASCII码形式存储在外存上;所谓二进制文件,就是文件以二进制的形式存储在外存上(二进制文件我们肉眼是看不懂的)。程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。
二、文件的操作
简单的了解了文件的定义后,让我们一起来认识和文件有关的一些操作。对于文件的操作,就像我们日常的生活一样,当然也是有一定的规律的。
1、打开文件
我们需要利用fopen函数来打开文件,并用文件指针来接受fopen的返回值(后续操作会用到)
注意fopen函数的最后一个参数mode,代表文件的打开模式,文件的打开模式有以下几种:
接下来,我们便使用fopen来打开一个文件,文件名称由我们自己规定:
这样,我们便很好的打开了一个test.txt文件:
2、读、写文件
在读写文件操作中,有着很多函数,都需要我们一一去了解,并且学会使用。
读写操作分为顺序读写和随机读写。
我们先来看顺序读写:
fputc为一个字符一个字符的写数据(输出)到文件中:
\
接下来,用vs2022来演示数据输出到文件中:
数据便很好的写到了我们的test.txt文件中。
同理,fgetc为一个字符一个字符的从文件中读取数据:
演示如下:
数据便很好的从文件中读取出来。
fputs为向文件中输出一行字符串:
代码演示如下:
我们便向文件中很好的输出了一行字符串。
fgets为向文件中读取一行数据:
此函数中参数较多,大家可查看各参数含义:
代码演示如下:
我们便从文件中很好的读取到了这一行数据。
对于fscanf函数以及fprintf函数,我们可以和scanf、printf函数比较,这样利于我们的理解。
对比可见,scanf函数和fscanf函数参数大同小异,只是第一个参数多了一个文件指针,printf函数和fprintf函数也是如此。
接下来,让我们来演示这两个函数的使用:
1.fprintf:
2.fscanf:
如上。
关于fread、fwrite二进制输入输出函数这里便不再讨论。
我们再来看文件的随机读写:
fseek函数可以帮助我们将鼠标光标移动到我们所要读写数据的位置处,来方便我们的读写操作。
根据⽂件指针的位置和偏移量来定位⽂件指针。
fseek函数的各参数含义如下:
offset代表我们要到达的位置相对于当前位置的偏移量
SEEK_SET 代表文件的起始位置
SEEK_CUR 代表文件的当前位置
SEEK_END 代表文件的最后位置
演示如下:
如上,我们可以很好的控制光标所在位置。
还有一些函数,如ftell ,返回⽂件指针相对于起始位置的偏移量。rewind 让⽂件指针的位置回到⽂件的起始位置。我们这里便不再一一演示。
3、关闭文件
在文件使用完后,我们要关闭文件。
代码:
fclose(pf);
pf = NULL;
以上便是这篇博客的全部内容,主要总结了关于文件的一些基本定义和操作,欢迎大家在评论区一起讨论~