文件和文件的输入与输出
什么是文件
文件有不同的类型,在程序设计中,主要用到两种文件:
程序文件:包括源程序文件(后缀为 .c),目标文件(后缀为 .o)以及可执行文件等。这种文件里的内容是程序代码。
数据文件:文件的内容不是程序,而是供程序运行时读写的数据,包括在程序运行过程中输出到磁盘的数据和在程序运行过程中供读入的数据,如全班学生的成绩数据、货物交易的数据等。
我们本节讨论的是数据文件。为了简化用户对输入输出设备的理解,用户不必区分各种输入输出设备之间的区别,操作系统把各种设备都统一作为文件来处理。例如终端键盘是输入文件,显示屏和打印机是输出文件。
文件的分类
根据数据的组织形式,数据文件可分为 ASCII 文件和二进制文件。数据在内存中都是以二进制形式存储的,如果不加转换地输出到外存,就是二进制文件,可以认为就是内存数据的映像,称为映像文件。如果要求在外存中以 ASCII 码形式存储,则需要在存储前进行转换。ASCII 文件又称为文本文件,每一个字节放一个字符的 ASCII 码。
用 ASCII 码形式输出时字节与字符一一对应,一个字节代表一个字符,因而便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间。用二进制形式输出数值,可以节省外存空间和转换时间,把内存中的存储单元中的内容原封不动地输出到外存磁盘上,此时一个字节并不一定代表一个字符。
打开和关闭文件
对文件读写之前应该“打开”该文件,使用结束之后“关闭”文件。实际上,所谓的打开文件是指为文件建立相应的信息区(用来存放有关文件的信息)和文件缓冲区(用来暂时存放输入输出的数据)。
fopen() 函数打开数据文件
fopen() 函数的调用方式为 **fopen(文件名,使用文件的方式);**。
例如:
fopen("a1","r");
表示要打开名字为“ a1 ”的文件,使用文件的方式为“读入”(r 代表 read,即读入)。fopen 函数的返回值是指向 a1 文件的指针(即 a1 文件信息区的起始地址)。通常将 fopen