章 | 节 | 知识点 | 精讲文档 | |||||||||||||||||||||||||||||||||||||
第十二章 文件 | 12.1 文件的概念 | 文件概念 | 文件是指存放在外部存储器上的数据的集合,它具有一个唯一的名字(文件名),可以通过文件名对文件进行存取、修改和删除等操作。 | |||||||||||||||||||||||||||||||||||||
二进制文件 | 数据在内存中是以二进制形式存储的,如果不加转换地输出到外存,就是二进制文件。 | |||||||||||||||||||||||||||||||||||||||
文本文件 | ASCII文件又称文本文件,每一个字节放一个字符的ASCII代码。 | |||||||||||||||||||||||||||||||||||||||
缓冲文件系统 | 缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。 | |||||||||||||||||||||||||||||||||||||||
非缓冲文件系统 | 非缓冲文件系统不由系统自动设置缓冲区,而由用户自己根据需要设置。 | |||||||||||||||||||||||||||||||||||||||
12.2 文件类型指针 | 文件指针 | 每个正在被使用的文件都在内存中占一个空间,用来存放文件的有关信息,这些信息保存在一个结构体变量中,该结构体类型在stdio.h中有说明,系统定义其为FILE。 文件指针是指FILE类型的指针,它指向一个文件类型的结构,结构里包含着该文件的各种属性。 文件指针的定义: FILE *fp; | ||||||||||||||||||||||||||||||||||||||
12.3 文件的打开与关闭 | 文件打开函数fopen() | fopen函数表示将给用户指定的文件在内存中分配一个FILE结构区,并将该结构的指针返回给用户程序。 格式: FILE *fp; fp=fopen(文件名,使用文件方式);
| ||||||||||||||||||||||||||||||||||||||
文件打开模式 | 文件打开模式如下表所示:
| |||||||||||||||||||||||||||||||||||||||
文件关闭函数fclose() | 文件的关闭函数格式: fclose (文件指针); | |||||||||||||||||||||||||||||||||||||||
12.4 文件的顺序读写 | 文件的顺序访问 | 在顺序写时,先写入的数据存放在文件中前面,后写入的数据存放在文件中后面。 在顺序读时,先读文件中前面的数据,后读文件中后面的数据。 对顺序读写来说,对文件读写数据的顺序和数据在文件中的物理顺序是一致的。 | ||||||||||||||||||||||||||||||||||||||
读写字符函数fputc()和fgetc() | fputc函数: l 格式:char fputc(char ch,FILE *fp); l 功能:将一个字符写入到磁盘文件中去。 fgetc函数: l 格式:char fgetc(FILE *fp); l 功能:从指定的打开的文件流中读取一个字符。 | |||||||||||||||||||||||||||||||||||||||
读写字符串函数fputs()和fgets() | fputs函数: l 格式:int fputs(char *str, FILE *fp); l 功能:向文件写入字符串。 fgets函数: l 格式:char *fgets(char *str, int n, FILE *fp); l 功能:从文件中读取字符串。 | |||||||||||||||||||||||||||||||||||||||
格式化读写函数fscanf()和fprintf() | 调用格式如下: fscanf(FILE *fp,char *format, arg_list); fprintf(FILE *fp,char *format, arg_list); 说明: fp为文件指针变量,format为格式字符串,arg_list为输入/输出表列。 | |||||||||||||||||||||||||||||||||||||||
二进制读写函数fread()和fwrite() | 二进制读写函数的调用形式如下: fread(buffer,num_bytes, count,fp); fwrite(buffer,num_bytes, count,fp); 其中: (1)buffer是被读写数据的指针(地址),对于fread来说,它是用来存放从文件读入的数据的存储区的地址,而对于fwrite来说,是要把此地址开始的存储区中的数据向文件输出。 (2)num_bytes是一次读写的数据的字节数。 (3)count是确定要读写的数据块的个数。 (4)fp是文件指针变量。 | |||||||||||||||||||||||||||||||||||||||
sizeof运算符 | sizeof 运算符返回其操作数占用空间的大小,以字节为单位。 | |||||||||||||||||||||||||||||||||||||||
12.5文件的定位、测试与随机读写函数 | 文件的随机访问 | 随机访问不是按数据在文件中的物理位置次序进行读写,而是可以对任何位置上的数据进行访问,这种方法比顺序访问效率高得多。 | ||||||||||||||||||||||||||||||||||||||
rewind( )函数 | 格式:rewind(FILE *fp); 功能:将文件指针返回文件头,同时清除文件结束符和出错标记。 | |||||||||||||||||||||||||||||||||||||||
feof()函数 | 格式:feof(FILE *fp); 功能:测试文件指针是否到达文件结尾。 说明:当文件指向文件结尾时,该函数返回一个非0值,表明文件数据结束,否则返回0以表明文件未结束。 | |||||||||||||||||||||||||||||||||||||||
ftell()函数 | 格式:ftell(FILE *fp); 功能:测试文件指针的当前值,这个值是从文件头算起的字节数。 | |||||||||||||||||||||||||||||||||||||||
fseek( )函数 | 格式:fseek(FILE *fp,long num_bytes,int origin) 功能:随机设置文件指针的值,以实现文件的随机读取。 | |||||||||||||||||||||||||||||||||||||||
12.6文件操作的出错检测 | ferror()函数 | 格式:ferror(FILE *fp); 功能:检测文件操作是否出错。 | ||||||||||||||||||||||||||||||||||||||
clearerr()函数 | 格式:void clearerr(FILE *fp); 功能:将指定的文件的出错标记和文件结束标记置0。 | |||||||||||||||||||||||||||||||||||||||
exit()函数 | 格式:void exit(int status); 功能:关闭文件。 |

