内容正文:
9.1 文件的概述
一、教学目标
1.了解文件的类型。
2.理解文件的存储形式。
3.认识标准级文件I/O函数的程序
二、重点难点
1.重点:(1)了解文件的类型 (2)理解文件的存储形式
2.难点:认识标准级文件I/O函数的程序
三、教学时间
本任务教学,课内计划1课时。
4、 教学过程
教学过程
教学环节
教师活动
学生活动
设计意图
导入新课
1.问题1:
前面已经介绍了用c语言进行编程的技术,不过所讨论的例子的输入数据要么保存在程序中(如变量初始化),要么从键盘输人,输出结果也没有长期保存,因为函数执行结束,本函数内定义的变量被释放,数据随之丢失。一个真正实用的程序的输入数据可能要求预先准备好,输出结果也需保存以待备用。谁来储存外存储器上的数据的集合。
文件
讨论、思考、观察
通过问题引入,激发学生的学习兴趣,引出本节课话题——文件
讲授新课
现实生活中经常会使用电脑记录一些信息,这些信息都是以文件的形式存储在磁盘上。下面就来看一下用C语言编写的程序文件,打开D:\itcast\chapter01\Program01目录,其中内容如图1所示。
图1所示的Program01目录下除了Debug是文件夹,其余三个都属于文件。
在C语言中,根据文件的存储形式,可分为文本文件和二进制文件,下面将针对这两种文件在内存中的存储形式进行分析,具体如下:
在文本文件中数据是以字符形式呈现的,每个字符占用一个字节,而字节在计算机中又是以ASCII码来识别。在存储文本文件时需要先将ASCII码值转换为二进制的形式然后进行存储。
例如,在内存中将整数123以文本形式存放,如图2所示。
在图2中,由于文本形式存储的数据都是以字符形式展示的,所以整数123被拆分为三个字符‘1’、‘2’、‘3’。这三个字符所对应的ASCII码值分别为49、50、51,长方形内的数字是该ASCII码对应的二进制数,每一个二进制数表示一个字节。
二进制文件在存储数据时是直接以二进制的方式进行的,这种存储方式与数据在内存中的存储方式相同,不需要进行转换。因此不仅可以提高执行效率,还能节省存储空间。
例如,在内存中将整数123以二进制形式存放,如图3所示。
在图11-3中,整数123在内存中是以二进制数“00000000 01111011”直接存储的,所以将二进制文件从硬盘中读取到内存时不需要数据转换。
为了对文件读写进行控制,系统为每个文件设置了一个位置指针,该指针被称为文件位置指针,用来标识当前文件的读写位置。
一般在对字符文件进行顺序读取操作时,文件的位置指针指向文件开头。当对文件进行读取操作时,首先读取第一个字符,然后文件的位置指针按顺序向后移一个位置,在下一次执行读取操作时,将指针指向的第二个字符。以此类推,一直读取到文件末尾结束。为了让读者更好的理解文件的读取过程,接下来通过一个图例进行描述,如图4所示。
如果是顺序写文件,则每写完一个数据后,文件的位置指针自动按顺序向后移一个位置,然后在下一次执行写操作时,把数据写入指针所指的位置。直到数据全部写完,此时位置指针在最后一个数据之后。有时希望在一个文件的原有数据之后再添加新的数据,应该把文件位置指针移到文件末尾,然后再接着写入新的数据,这就是文件的追加。
大多数应用程序都需要实现与设备之间的数据传输,例如,键盘可以输入数据、显示器可以显示程序的运行结果等,在C语言中将这种通过不同输入/输出设备(键盘、内存、显示器、网络等)之间的数据传输抽象表述为“流”。流实际上就是一个字节序列,输入程序的字节序列被称为输入流,从程序输出的字节序列被称为输出流。为了方便读者更好的理解流的概念,可以把输入流和输出流比作两根“水管”,如图5所示。
图5中,输入流被看成一个输入管道,输出流被看成一个输出管道,数据通过输入流从源设备输入到程序,通过输出流从程序输出到目标设备,从而实现数据的传输。
在C语言中,没有提供输/输出语句,对文件的读/写都是通过库函数来实现的。ANSI文件系统的I/O函数在stdio.h中说明。因此只要使用到标准级文件I/O函数的程序,都应有下面的包含语句:
#include <stdio.h>
学生思考、理解
认识程序文件
文件的两种存储形式
文件读取过程
思考
教师讲解,以及便于学生理解和掌握。
教师讲解
教师讲解加以引导
教师讲解
教师讲解,学生加以理解
教师举例说明
课堂小结
学生回答
利用问题形式进行总结
作业设计
1.完成同步练习题。
2.预习9.2
学科网(北京)股份有限公司精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$