内容正文:
千锋教育
《C语言程序设计》
教学设计
课程名称: C语言程序设计教程
授课年级:
授课学期:
教师姓名:
2017年09月01日
课程名称
第12章 文件操作
计划学时
4学时
内容分析
本章主要介绍文件的概念、文件的基本操作和文件的高级操作
教学目标
与
教学要求
了解文件的概念,掌握文件的常用操作、文件的高级操作
教学重点
文件的常用操作
教学难点
文件的高级操作
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(文件概述、文件的常用操作)
文件概述
· 文件
计算机系统是以文件为单位,来对数据进行管理的,打开Windows上的资源管理器,进入任意一个文件夹,就可以看到文件了,如图12.1所示。
图12.1 Windows系统文件夹下的部分文件
一个文件要有一个由文件路径、文件名主干和文件后缀组成的唯一标识,以便用户识别和引用,它常被称为文件名,但注意此时所称的文件名包括三部分内容,而不是文件名主干。文件名主干的命名规则遵守标识符的命名规则。后缀名用来表示文件的形式,一般不超过3个字母,如:exe(可执行文件),c(C语言源程序文件),cpp(C++源程序文件),txt(文本文件)等。
· 文本文件与二进制文件
C语言中把“文件”看成是一个字符的序列,即由一个个字符(字节)的数据顺序组成,根据数据的组织形式可分为ASCII文件和二进制文件两种,ASCII文件又称为文本(text)文件,每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘。例如:整数1034用ASCII码存放占用4个字节,若按二进制形式存放只占用2个字节,如图12.2所示。
图12.2 整数1034的存放形式
图12.2中,用ASCII码表示,字符与字节一一对应,便于对字符逐个处理,也便于直接进行字符输出,但一般占用存储空间较多,而且要花费二进制形式与ASCII形式间的转换时间。用二进制形式节省存储空间,并且不需转换时间,但一个字节不对应一个字,不能直接输出显示。
用ASCII码形式输出时字节与字符一一对应,一个字节代表一个字符,因此便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费二进制转化为ASCII码的转换时间。用二进制形式输出数值,可以节省外存空间和转换时间,把内存中的存储单元中的内容原样地输出到磁盘(或其他外部介质)上,此时每一个字节并不一定代表一个字符。如果程序运行过程中有的中间数据需要保存到外部介质上,以便在需要时再输入到内存,一般用二进制文件比较方便。在事务管理中,常有大批数据存放在磁盘上,随时调入计算机进行查询或处理,然后又把修改过的信息再存回磁盘,这时也常用二进制文件。
此外windows有一个明显的区别是对待文本文件读写的时候,会将换行
自动替换成 \r
。最后文本文件和二进制文件主要是windows下的概念,UNIX/Linux并没有区分这两种文件,对所有文件一视同仁,将所有文件都看成二进制文件。
· 流
C语言中引入了流的概念,它将数据的输入输出看作是数据的流入和流出,这样不管是磁盘文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的。这种把数据的输入输出操作对象,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。
C语言中流可分为2大类,即文本流和二进制流:
(1)文本流是由文本行组成的序列,每一行包含0个或多个字符,并以’
’结尾。在某些环境中, 可能需要将文本流转换为其它表示形式(例如把'
'映射成回车符和换行符),或从其它表示形式转换为文本流。
(2)二进制流是由未经处理的字节构成的序列,这些字节记录着内部数据,并具有下列性质:如果在同一系统中写入二进制流,然后再读取该二进制流,则读出和写入的内容完全相同。
程序开始执行时,默认会打开标准输入流(stdin,全称standard input)、标准输出流(stdout,全称standard output)和标准错误输出流 (stderr,全称standard error)三个流,它们都是文本流。有关文件操作的函数属于C语言标准输入输出库中的函数,为使用其中的函数,应在源程序文件的开头写上#include<stdio.h>。
C语言对文件的输入输出是由库函数来完成的,它没有输入输出语句。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一次送往磁盘,反之,从磁盘读出数据到内存,也要先将一批数据送