5言 第九单元 文件 程序设计语言C 西华师范大学 数学与信息学院
西华师范大学 数学与信息学院 教学目标 ●介绍C语言 流式文件概念 三类文件读写函数。 00e
西华师范大学 数学与信息学院 学习要求 ●通过本单元的学习 1.能熟练运用下列文件处理库函数: fopen, fclase fgetc, fputc, fgets, fputs, fseek. ftell fprintf, fscanf, fread, fwrite 2.能编写一般的文件处理类程序。 00e
! "# $# "#! $#! !% # &'# ! & ( )&'# *+ ,-./0123
西华师范大学 数学与信息学院 本单元授课内容 ●文件的概念 ●文件的打开/关闭 ●按字符方式读写文件 ●按格式读写文件 ●按块读写文件 ●非缓冲区文件系统简介 ●汉字显示的基本原理
45 6789: ;?@- ;A?@- ;B@- CDEFGHIJ K<LMNO
西华师范大学 数学与信息学院 、文件概述 ●在C语言中没有设置专门的输入、输出语 句。IO功能由O库函数来处理。 ●这些函数的共同之处是数据I/0操作都是 通过标准输入设备(一般为键盘)和标准 输出设备(一般为显示器)进行。 ●大量IO数据如何处理?靠键盘输入?? 不是。 ●大量IO数据用什么方式处理?—文 件
!"# !"#$%&'(! )*+, - ./01234 5+, - ./0167849: ;?@23 ?? A! ;<"BCDEF?G HI
西华师范大学 数学与信息学院 1、文件 ●所谓文件,就是存于计算机中,具有唯一标识 名的相关的一批数据的集合。 ●相关是指逻辑上有联系的一批数据(可以是 批实验数据,或者一篇文章,一幅图象,甚至 段程序等)。每个文件在磁盘中的具体存放位 置、格式以及读写等工作都由文件系统管理。 ●文件系统可以实现文件的“按名”操作。 ●文件操作包括:读、写、删除、拷贝、显示和 打印等
" JKGHLM!NOPQRSTU/+V WXY/Z"[\ XY!]^_`ab/Z".cd!/ Zef"Lgh/iGjL/klmLno/ pqrs4tuGHv3TwNxy zFd{|}s~'(GHb GHbcdeGHW&' GH&' |}675 s
西华师范大学 数学与信息学院 文件处理的单位 ●文件系统是以文件为单位,对文件的整体进行处理,例 如删除文件、拷贝文件等等。 ●应用程序则是对文件的内容进行处理。由于文件的内容 可能千变万化,文件的大小各不相同,那么以什么为单 位处理文件中的数据呢? ●C语言中引入了流式文件( stream)的概念,即无论文件 的内容是什么,一律看成是由字符(或字节)构成的序列, 即字符流。流式文件中的基本单位是字节,磁盘文件和 内存变量之间的数据交流以字节为基础。 ●数据库系统中,是以记录为单位对数据的处理的。 ●如果实际数据还有比按字节划分更高级的逻辑结构,可 以通过一次读写多个字节来实现
$%&' !"#$!" %&'()*+ ,-./01+ 2343 56789 :;?@ABCDEFGHIJK+ LMN !"43+OPQR#STBUSVIWRX+ LST@@A5YZ SV+ [\] !^(_`a67b@SVYc 67d5 ef 67 ghi67jklmSVnopqrstuW+ % vwOxyz{|SV}h~
西华师范大学 数学与信息学院 流式文件处理中的基本概念 ●读:从文件中将数据拷贝到内存变量中来。根据情况不同, 次可以读一个字节,也可以根据内存变量的大小读相应 数量的字节,甚至可以一次将一批数据读到一片连续的存 储区(如数组或动态分配的存储块)中 ●写:将内存变量中的数据拷贝到文件中去。和读文件的情 况相似,一次可以将一个变量或者一片连续存储区中的数 据写入文件; ●文件指针:由于通常文件中的数据很多,所以在读写时应 该指明是对哪些数据进行操作。在流式文件中采用的方法 是设立一个存放文件读写位置的变量,称为文件指针。在 开始对某文件进行操作时将文件指针的值设置为0,表示读 写操作应从文件首部开始执行;每次读、写之后,自动将 文件指针的值加上本次读、写的字节数,作为下次读写的 位置。 00e
P?QN45 y 567!^(_5}7 /1+ Ox%yO|SV+ %7!^(_,-y0 6_SV+ %OxO67yO^ B6Uo^I 5 z !^(_5675]y 0+ Ox%O|(_UO^56 7z> #$v567{+ yz ¡¢67£¤@A5¥¦§ ¨©O|^ªyz «(_+ ¬ ®¯£¤°¨«±+²³y z£¤´µ®¶ ·xyz`¸+ ¹ °º»ZxyzSV6+ ¤¼xyz «
西华师范大学 数学与信息学院 缓冲区 ●由于磁盘的读写速度比内存的处理速度要慢一个数量级, 而且磁盘驱动器是机电设备,定位精度相对比较差,所 以磁盘数据存取以扇区( sector,磁盘上某磁道中的 个弧形段,定长,例如512B或1024B)或者簇( cluster, 由若干连续的扇区组成)为单位。具体做法是在内存中 划出一片存储单元,称为缓冲区。从磁盘中读取数据时 先将含有该数据的扇区或簇读到缓冲区中,然后再将具 体的数据拷贝到应用程序的变量中去。下次再读数据时, 首先判断数据是否在缓冲区中,如果在,则直接从缓冲区 中读,否则就要从磁盘中再读另一个扇区或簇。向磁盘 中写数据也是这样,数据总是先写入缓冲区中,直到缓冲 区写满之后再一起送入磁盘。为了能使应用程序同时处 理若干个文件,就必需在内存中开辟多个缓冲区。对缓 冲区的管理是操作系统的基本功能之一。 00e
()* #$[\yz½¾l!^½¾¿ÀO|6_r+ ÁÂ[\ÃÄÅƨÇ+È É¾0lÊË+ [\67^ÌÍ BCFÎDÏE+[\»¯[Ð5O |ÑÒÓ ÈÔ ÕÖ×ØUÖ±×ÙØIUÚ BÎÛÜCDFE+ #ÝÞÍRI ßà§!^5 náO^â+¬ãä[\5yÌ67 åæk67ÍUÚyãä5+ç¸èß 67(_5¼xèy67+ ´åéê67ëãä5+g+ ìíãä 5y+ë î¿[\5èyïO|ÍUÚð[\ 5z67ñò+67óåz>ãä5+ìãä zô`¸èOõö>[\?&÷1 ÝÞ|+îøù!^5ú{|ãäã äû£¤YZü&`O
西华师范大学 数学与信息学院 2缓冲文件的处理库函数 ●库函数按其功能可以分为三类: 1.用于打开和关闭文件, fopen0、 fclose0 2.用于读、写文件;又可按处理文件中数据的方 式分为按字符读写、格式读写和二进制读写等 几组函数; 3.文件指针管理函数;包括文件指针重新定位 fsek0、求当前文件指针位置fe10和文件 结束检测 feof(等函数。 00e
()&$%+ cd1 BO5YGHL .4.4 BO|}GH ¡cGH"E F1¢£|}zF|}5¤9¥|}s ¦§¨ ©GH]ª GH]ª«¬y ®.4¯°±GH]ªy ².45GH ³´µ¶.4s