内容正文:
第12章 文 件
12.1 文件概述
12.2 文件的打开与关闭
12.3 文件的读写操作
12.4 位置指针与文件定位
12.1 文件概述
1.文件的分类
文件可以从不同的角度进行分类:
(1)根据文件的内容来分:可分为源程序文件、目标文件、可执行文件和数据文件等。
(2)根据文件的组织形式来分:可分为顺序存取文件和随机存取文件。
(3)根据文件的存储形式来分:可分为ASCⅡ码文件(又称文本文件)和二进制文件。他的每一个字节存储一个ASCⅡ码(代表1个字符)。二进制文件是把内存中的数据,原样输出到磁盘文件中。
下一页
返回
12.1 文件概述
2.读文件与写文件
所谓读文件是指,将磁盘文件中的数据传送到计算机内存的操作。
所谓写文件是指,从计算机内存向盘文件中传送数据的操作。如图12-2所示。
3.文件类型
系统给每个打开的文件都在内存中开辟一个区域,用于存放文件的有关信息(如文件名、文件位置等)。这些信息保存在一个结构类型变量中,该结构类型由系统定义,取名为FILE(注意: “FILE”必须大写)。并放在<stdio.h>头文件中。
上一页
下一页
返回
12.1 文件概述
4.缓冲文件系统(标准I/O)
所谓缓冲文件系统是指,系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。
从磁盘文件向内存读入数据时,首先将一批数据读入到文件缓冲区中,再从文件缓冲区将数据逐个送到程序数据区。如图12-3所示。
从内存向磁盘输出数据时,则正好相反;必须先将一批数据输出到缓冲区中。待缓冲区装满后,再一起输出到磁盘文件中。如图12-4所示。
上一页
返回
12.2 文件的打开与关闭
12.2.1文件的打开(fopen()函数)
1.格式: fopen(“文件名”,“操作方式”);
(1)“文件名”是指要打开(或创建)的文件名。如果使用字符数组(或字符指针),则不使用双引号。
(2)“操作方式”如表12-1所示。
2.功能:返回一个指向指定文件的指针。
下一页
返回
12.2 文件的打开与关闭
3.说明
(1)如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL(其值在头文件stdio.h中被定为0)。
常用下面的方法打开一个文件:
if((p=fopen(“文件名”,”操作方式’))==NULL)
{printf(“can not open this file
”);
exit(0); /*关闭打开的所有文件,程序结束运行,返回操作系统*/
}
上一页
下一页
返回
12.2 文件的打开与关闭
(2)“r(b)+”与“a(b)+”的区别:使用前者打开文件时,读写指针指向文件头;使用后者时,读写指针指向文件尾。
(3)使用文本文件向计算机系统输入数据时,系统自动将回车换行符转换成一个换行符;在输出时,将换行符转换成回车和换行两个字符。
使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。
(4)有些C编译系统,可能并不完全提供上述对文件的操作方式,或采用的表示符号不同,请注意所使用系统的规定。
上一页
下一页
返回
12.2 文件的打开与关闭
(5)在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针:
1)标准输入文件——stdin:指向终端输入(一般为键盘)。如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。
2)标准输出文件——stdout:指向终端输出(一般为显示器)。
3)标准错误文件——stderr:指向终端标准错误输出(一般为显示器)。
上一页
下一页
返回
12.2 文件的打开与关闭
12.2.2文件的关闭(fclose()函数)
在使用完一个文件后,为防止被误用或数据丢失,应该及时关闭。
(1)用法: fclose(文件指针);
(2)功能:关闭“文件指针“所指向的文件。如果正常关闭了文件,则函数返回值为0;否则,返回值为非0。
例如,fclose(fp); /*关闭fp所指向的文件*/
上一页
返回
12.3 文件的读写操作
12.3.1 读/写文件中的一个字符——fgets()和fputs()函数
1. 将一个字符写到文件中——fputc()函数
#include”stdio.h”
main(int argc,char*argv[])
{FILE *fp;