文档介绍:第13章文件
1
1 几个基本概念
2 文件类型指针
3 文件的打开与关闭
4 文件的读写
5 文件的定位
6 总结
文件
2
几个基本概念
3
文件的基本概念
文件(file):存储在外部介质上的数据的集合。
操作系统是以文件为单位对数据进行管理的。在程序运行时,常常需要将一些数据输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这就要用到磁盘文件。
windows下每个文件对应的四项参数:文件名、大小、类型、修改时间
C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件(文本文件)和二进制文件。
4
文本文件
文本文件的每一个字节放一个ASCII码,代表一个字符。文本文件的输出与字字符对应,一个字节代表一个字符,例如一个整数10000占用5个字节
因此便于对字符逐个处理,也便于输出字符。
文本文件由文本行组成,每一行中可以有0个或者多个字符,并以换行符'\n'结尾,文本结束标记是0X1A。在文本文件向计算机输入的时候,将回车换行符('\r','\n')转换为换行符,在输出的时候把换行符('\n')转换为回车和换行两个字符。
例如输入
abcd<CR>
efgh
则存储为文本文件以后,第7个字符是f而不是e
例如:10000是整型数据,用二进制表示占两个字节,如用ASCII码输出,则占五个字节。
  二进制形式:00100111 00010000
ASCII形式:00110001 00110000 00110000 00110000 00110000
5
二进制文件
二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
其优点是节省空间, 输入输出速度快;
缺点是一个字节并不对应一个字符(如一个整数10000占用2个字节),不能直接输出字符的形式。
二进制文件不能象文本文件那样从回车换行符到换行符之间的转换。
6
设备文件
在C中把所有外部设备作为文件对待,这样的文件称为设备文件。例如把打印机设为设备文件的时候,由系统命名为PRN文件。向PRN文件文件输出数据,就是向打印机输出数据。C语言中常用的标准设备的文件名如下:
CON或KYBD 键盘
CON 或 SCRN 显示器
PRN或LPT1打印机
1异步通信口
另外还有3个标准设备文件的文件结构体指针也是由系统命名而成的
stdin
stdout
stderr
7
流
流是程序输入或者输一个出的一个连续序列,设备(键盘,磁盘,显示器和打印机等)输入输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现,包括设备文件。流实际上是文件输入输出的一种动态的形式。一个C文件即是字节流或二进制流。
8
文件类型指针
9
从磁盘文件输入数据时(即读文件), 先将数据送到"输入缓冲区", 再从缓冲区将数据传送给程序数据区(即传给程序中的变量) ; 向磁盘文件输出数据时(即写文件), 先将程序中变量的值送到"输出缓冲区", 等缓冲区装满后再将数据一起传送给磁盘文件. 使用缓冲区的目的是为了减少对磁盘的实际读写次数。
2. 磁盘文件系统的分类
(1) 缓冲文件系统: 系统自动的在内存区为每一个正在使用的文件开辟一个缓冲区. 缓冲区的大小由具体的C版本确定, 一般为512字节.
(2) 非缓冲文件系统: 系统不是自动开辟确定大小的缓冲区,由程序为每个文件设定缓冲区及其大小(即缓冲区由用户根据需要自己进行设置) .
ANSI C标准采用缓冲文件系统处理文本文件和二进制文件。
在C语言中,对文件的读写都是用库函数来实现的。
磁盘文件系统
10