存储器可分成内存储器和外存储器。内存又称主存,通常是指内存条;外存如硬盘等。断电后内存中数据会丢失,但外存中数据能长期保存。需长期保存数据时,程序可将内存中的数据存储到外存中。使用外存中的数据时,程序需将外存中的数据读取到内存中。
外存空间管理的基本单位是文件,一个文件相当于外存中的一块存储空间。以文件名标识的外存空间以字节为单位,可看成字节的序列。文件中的外存空间也可看成由与保存数据的类型相同的存储单元组成。存储单元全部为字符型的文件称为文本文件。不是文本文件的文件就是二进制文件。只有确定了各个存储单元的类型,才能正确地读取文件中数据。文件的扩展名表明了文件的格式,即文件中存储单元的组织方式。txt是文本文件,mp3是音乐文件,bmp是图像文件等。
数据16705既可以看作是由5个字符组成,也可以看作是一个short型整数。用文件保存16705时,若用5个char型存储单元依次存储'1'、'6'、'7'、'0'和'5',则文件是文本文件;若用一个short型存储单元存储整数16705,则文件是二进制文件。读取文本文件中数据时,重复读取文件中1个字节的数据到char变量中即可。读取二进制文件中数据时,只有确定存储单元是short型,才能读取文件中2个字节的数据到short型变量中。
若数据已是最终的处理结果,保存数据的目的是记录结果,则将数据转换成字符串,用文本文件存储。文本文件的存储单元都是字符型,格式简单,可以用多种软件查看内容。若数据还需继续处理,则用同类型的存储单元存储数据时,存取过程均无需类型转换,便于恢复处理过程。
为方便使用,计算机中的硬件常被抽象成文件,这类文件称为设备文件。“键盘”被抽象成以只读方式打开的文本文件,用户输入的字符通常会自动存入此文件中,读取文件的内容即可获得用户的输入。这个文件就是所谓的“输入缓冲区”。scanf函数读取输入设备文件获得用户的输入。
本章最后以一个简单的学生成绩管理系统演示了文件的使用。