1 / 20
文档名称:

C语言 谭浩强PPT课件.ppt

格式:ppt   大小:67KB   页数:20页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言 谭浩强PPT课件.ppt

上传人:读书百遍 2025/5/17 文件大小:67 KB

下载得到文件列表

C语言 谭浩强PPT课件.ppt

相关文档

文档介绍

文档介绍:该【C语言 谭浩强PPT课件 】是由【读书百遍】上传分享,文档一共【20】页,该文档可以免费在线阅读,需要了解更多关于【C语言 谭浩强PPT课件 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。C程序设计
讲师:徐红波
Email: x_h_******@
第13章 文献
文献(file)是程序设计中一种重要的概念。所谓“文献”一般指存储在外部介质上数据的集合。一批数据是以文献的形式寄存在外部介质(如磁盘)上的。操作系统是以文献为单位对数据进行管理的,也就是说,假如想找存在外部介质上的数据,必须先按文献名找到所指定的文献,然后再从该文献中读取数据。要向外部介质上存储数据也必须先建立一种文献(以文献名标识),才能向它输出数据。
此前各章中所用到的输入和输出,都是以终端为对象的,即从终端键盘输入数据,运行成果输出到终端上。从操作系统的角度看,每一种与主机相联的输入输出设备都看作是一种文献。例如,终端键盘是输入文献,显示屏和打印机是输出文献。
在程序运行时,常常需要将某些数据(运行的最终止果和中间数据)输出到磁盘上寄存起来,后来需要时再从磁盘中输入到计算机内存。这就要用到磁盘文献。
C语言把文献看作是一种字符(字节)的序列,即一种一种字符(字节)的数据次序构成。根据数据的组织形式,可分为ASCII文献和二进制文献。ASCII文献又称文本文献,它的每一种字节放一种ASCII代码,代表一种字符。二进制文献是把内存中的数据按其在内存中的存储形式原样输出到磁盘上寄存。
由前所述,一种C文献是一种字节流或二进制流。它把数据看作是一连串的字符(字节),而不考虑记录的界线。换句话说,C语言中文献并不是由记录(record)构成的(这是和PASCAL或其他高级语言不一样的)。在C语言中对文献的存取是以字符(字节)为单位的。输入输出的数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制。也就是说,在输出时不会自动增长回车换行符以作为记录结束的标志,输入时不以回车换行符作为记录的间隔(实际上C文献并不由记录构成)。把这种文献称为流式文献。C语言容许对文献存取一种字符,这就增长了处理的灵活性。
在过去使用的C版本(如UNIX系统下使用的C)有两种对文献的处理措施:一种叫“缓冲文献系统”,一种叫“非缓冲文献系统”。所谓缓冲文献系统是指系统自动地在内存中为每一种正在使用的文献名开辟一种缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。假如从磁盘向内存读入数据,则一次从磁盘文献将一批数据输入到内存缓冲区(充斥缓冲区),然后再从缓冲区逐一地将数据送到程序数据区(给程序变量)。缓冲区的大小由各个详细的C版本确定,一般为512字节。
所谓“非缓冲文献系统”是指系统不自动开辟确定大小的缓冲区,而由程序为每个文献设定缓冲区。
在UNIX系统下,用缓冲文献系统来处理文本文献,用非缓冲文献系统处理二进制文献。用缓冲文献系统进行的输入输出又称为高级(或高层)磁盘输入输出(高层I/O),用非缓冲文献系统进行的输入输出又称为低级(低层)输入输出系统。ANSI C原则决定不采用非缓冲文献系统,而只采用缓冲文献系统。即既用缓冲文献系统处理文本文献,也用它来处理二进制文献。也就是将缓冲文献系统扩充为可以处理二进制文献。
在C语言中,没有输入输出语句,对文献的读写都是用库函数来实现的。ANSI规定了原则输入输出函数,用它们对文献进行读写。
文献类型指针
缓冲文献系统中,关键的概念是“文献指针”。每个被使用的文献都在内存中开辟一种区,用来寄存文献的有关信息(如文献的名字、文献状态及文献目前位置等)。这些信息是保留在一种构造体变量中的。该构造体类型是由系统定义的,取名为FILE。
文献的打开与关闭 文献的打开(fopen函数)
文件使用方式
含义
“r”(只读)
为输入打开一个文本文件
“w”(只写)
为输出打开一个文本文件
“a”(追加)
向文本文件尾增加数据
“rb”(只读)
为输入打开一个二进制文件
“wb”(只写)
为输出打开一个二进制文件
“ab”(追加)
向二进制文件尾增加数据
“r+”(读写)
为读/写打开一个文本文件
“w+”(读写)
为读/写简历一个新的文本文件
“a+”(读写)
为读/写打开一个文本文件
“rb+”(读写)
为读/写打开一个二进制文件
“wb+”(读写)
为读/写建立一个新的二进制文件
“ab+”(读写)
为读/写打开一个二进制文件
阐明:
(1)用“r”方式打开的文献只能用于向计算机输入而不能用作向该文献输出数据,并且该文献应当已经存在,不能用“r”方式打开一种并不存在的文献(即输入文献),否则出错。
(2)用“w”方式打开的文献只能用于向该文献写数据(即输出文献),而不能用来向计算机输入。假如本来不存在该文献,则在打开时新建立一种以指定的名字命名的文献。假如本来已存在一种以该文献名命名的文献,则在打开时将该文献删去,然后重新建立一种新文献。
(3)假如但愿向文献末尾添加新的数据(不但愿删除原有数据),则应当用“a”方式打开。但此时该文献必须已存在,否则将得到出错信息。打开时,位置指针移到文献末尾。
(4)用“r+”、“w+”、 “a+”方式打开的文献既可以用来输入数据,也可以用来输出数据。用“r+”方式时该文献应当已经存在,以便能向计算机输入数据。用“w+”方式则新建立一种文献,先向此文献写数据,然后可以读此文献中的数据。用“a+”方式打开的文献,本来的文献不被删去,位置指针移到文献末尾,可以添加,也可以读。
(5)假如不能实现“打开”的任务,fopen函数将会带回一种出错信息。出错的原因也许是用“r”方式打开一种并不存在的文献;磁盘出故障;磁盘已满无法建立新文献等。此时fopen函数将带回一种空指针值NULL。
(6)在向计算机输入文本文献时,将回车换行符转换为一种换行符,在输出时把换行符转换成为回车和换行两个字符。在用二进制文献时,不进行这种转换,在内存中的数据形式与输出到外部文献中的数据形式完全一致,一一对应。
(7)在程序开始运行时,系统自动打开3个原则文献:原则输入、原则输出、原则出错输出。这3个文献都与终端相联络。因此此前所用到的从终端输入或输出都不需要打开终端文献。系统自动定义了3个文献指针stdin、stdout和stderr,分别指向终端输入、终端输出和原则出错输出(也从终端输出)。假如程序中指定要从stdin所指的文献输入数据,就是指从终端键盘输入数据。