目录
7.scanf/fscanf/sscanf ;printf/fprintf/sprintf两组函数的对比
1.什么是文件?
磁盘(硬盘)上的文件就是文件,从文件的功能分有两种文件一种是程序文件,一种是数据文件
1.1程序文件
程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows
环境后缀为.exe)。
1.2数据文件
⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或
者输出内容的⽂件。 这个我们读取的数据就是数据文件。
2.数据文件的分类
2.1文件名
在分类之前我们先来了解一下什么是文件名
⼀个⽂件要有⼀个唯⼀的⽂件标识,以便⽤⼾识别和引⽤。
⽂件名包含3部分:⽂件路径+⽂件名主⼲+⽂件后缀
例如:
c:\code\test.txt
为了⽅便起⻅,⽂件标识常被称为⽂件名。
2.2二进制文件
数据在内存中以⼆进制的形式存储,如果不加转换的输出到外存的⽂件中,就是⼆进制⽂件。
下面我们用vs打开一个二进制文件来看一下

在vs中我们可以右键单击这个文件选择用二进制编译器打开

我们知道8的二进制位是0000 0000 0000 0000 0000 0000 0000 1111每四位换成一个16进制也就是00 00 00 08由于vs中是小端存储所以写到文件中就是08 00 00 00。
2.3文本文件
数据在内存中以⼆进制的形式存储,如果以ASCII码值存到外存上就是文本文件。
下面来看一下10000的存储:

3.文件的打开和关闭
3.1流
在c语言中我们针对各种数据的输入输出都是依靠流的,我们想要获取流里面的数据或者想要向流中输入数据都要先打开流
3.2标准流
我们不难发现当我们从键盘上输入输出输出数据时,我们并没有进行打开流的操作,这是因为在程序执行就默认打开了3个流也就是我们说的标准流。
stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。
•
stdout - 标准输出流,⼤多数的环境中输出⾄显⽰器界⾯,printf函数就是将信息输出到标准输出
流中。
•
stderr - 标准错误流,⼤多数环境中输出到显⽰器界⾯。
这是默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。
stdin、stdout、stderr 三个流的类型是:
FILE*
,通常称为⽂件指针。
C语⾔中,就是通过
FILE*
的⽂件指针来维护流的各种操作的。
4.文件指针
上述我们知道了c语言中我们用FILE *的指针来维护流
那这个FILE *到底是啥呢?我们来看一下
每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名
字,⽂件状态及⽂件当前的位置等)。这些信息是保存在⼀个结构体变量中的。该结构体类型是由系
统声明的,取名 FILE如下图所示:

编译器不同文件信息区里面的内容也不相同,我们作为使用者不需要关注这些细节。

上图所示,每个文件都有自己的文本信息区是一个名为FILE的结构体类型,文件指针就是指向这里的文本信息区。以便我们进行维护。
5.如何进行文件的打开与关闭?
这里我们需要介绍两个函数:
ANSI C 规定使⽤
fopen
函数来打开⽂件,
fclose
来关闭⽂件。

mode表⽰⽂件的打开模式,下⾯都是⽂件的打开模式:
