一、文件的分类
1、操作系统是以文件为单位对数据进行管理的
2、从操作系统的角度看,每一个与主机相连的输入、输出设备看作是一个文件
例: 输入文件:终端键盘 输出文件:显示屏和打印机
3、按数据的组织形式:
ASCII文件(文本文件):每一个字节放一个ASCII代码
二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放
例: 10进制整数10000在内存中的存储形式以及分别按ASCII码形式和二进制形式输出如下图:
ASCII文件和二进制文件的比较:
a. ASCII文件便于对字符进行逐个处理,也便于输出字符,但占内存空间较多,而且要花费转换时间
b. 二进制文件可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式
c. 一般中间结果数据需要暂时保存在外存上,以后又需要输入内存的,常用二进制文件保存
二、C语言对文件的处理方法
缓冲文件系统:系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。用缓冲文件系统进行的输入输出又称为高级磁盘输入输出
非缓冲文件系统:系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区,用非缓冲文件系统进行的输入输出又称为低级输入输出系统
三、文件的打开与关闭
1、文件的打开( fopen函数 )
(1)函数调用: FILE *fp ;
fp = fopen ( 文件名,使用文件方式 ) ;
(2)注意:
a. 用 “ r ” 打开一个文件时,该文件必须已经存在,且只能从该文件读出
b. 用 “ w ”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删除,重建一 个新文件
c. 若要向一个已存在的文件追加新的信息,只能用 “ a ” 方式打开文件。但此时该文件必须时存在的,否则会出错
d. 在打开一个文件时,如果出错,fopen 将返回一个空指针值 NULL
2、文件的关闭( fclose函数 )
(1)函数调用: fclose ( 文件指针 ) ;
(2)返回值:关闭成功返回值为0,否则返回EOF(即为-1)
四、文件的读写
1、字符读写函数:fgetc 和 fputc
2、字符串读写函数:fgets 和 fputs
3、数据块读写函数:freed 和 fwrite
4、格式化读写函数:fscanf 和 fprinf