一.文件定义与分类
1.文件名
每个文件都要有一个唯一的文件标识,以便用户识别和引用。
文件名包含
3
部分:文件路径
+
文件名主干
+
文件后缀
例如:
c:\code\test.txt
为了方便起见,文件标识常被称为
文件名
。
2.文件类型
根据数据的组织形式,数据文件被称为
文本文件
或者二进制文
件。
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是
二进制文件
。
如果要求在外存上以
ASCII
码的形式存储,则需要在存储前转换。以
ASCII
字符的形式存储的文件就是
文本文件
。
一个数据在内存中是怎么存储的呢?
字符一律以
ASCII
形式存储,数值型数据既可以用
ASCII
形式存储,也可以使用二进制形式存储。
如有整数
10000
,如果以
ASCII
码的形式输出到磁盘,则磁盘中占用
5
个字节(每个字符一个字节),而二进制形式输
出,则在磁盘上只占
4
个字节。
二.文件缓冲区
ANSIC
标准采用
“
缓冲文件系统
”
处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“
文件缓冲区
”
。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。
如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐 个地将数据送到程序数据区(程序变量等),不同的系统文件缓冲区的大小也不同。
三.文件指针
文件的打开关闭等操作都需要通过指针方式进行,每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.
通过文件指针,我们可以找到该文件的地址,从而对它的具体内容进行访问。
四.文件具体操作
1.文件的打开与关闭
文件在读写之前应该先打开文件,在结束时应该关闭文件。
fopen负责文件的打开,fclose负责文件的关闭。
int
fclose
(
FILE
*
stream
);
该函数的两个参数,第一个即为文件名,第二个为打开方式。
具体打开方式如下表,需要注意的是必须按照选择的打开方式对文件进行相关操作,否则程序会报错。同时打开方式之间可以形成符合模式。
![](https://i-blog.csdnimg.cn/blog_migrate/53935c5f49da4e881847d75c6e04af53.png)
示例如下:
![](https://i-blog.csdnimg.cn/blog_migrate/d2cbb2d056fa5464bc5aef0b9d7a68a2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1f50e77fab6a751b8ef710a7ada23f02.png)
此处我们并未创建一个名为myfile的txt文件,由于检索不到且打开"w",系统会自动创建并利用fputs函数在该文件内写入内容。
fopen
如果文件成功打开,该函数将返回指向 FILE 对象的指针,该对象可用于在将来的操作中标识流。
否则,将返回 null 指针。
在大多数库实现中,errno 变量也设置为失败时特定于系统的错误代码。
fclose
如果文件成功关闭,该函数将返回0,如果关闭失败,则会返回EOF。
需注意该函数的返回值类型为int
2.文件的顺序读写
流
在这里我们引入了流的概念,流分为标准输入流和标准输出流,其实就是暂时用来储存输入和输出,由于其具有流动动态性,因此称为流。
fgetc
上图提到fgetc是字符输入函数,他负责对文件内容的读取,并且每一次都是读取一个字符,其返回值为int。那么如何利用fgetc来读取文件的所有字符呢?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/79482.html