- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.改变文件位置指针函数FSEEK()随机文件实现的关键是控制当前文件指针的移动,可由FSEEK函数完成。FSEEK函数的调用格式为:FSEEK(文件类型指针,偏移量,起始点);其中“偏移量”是离起点的字节数,可为整型或长整型。起始点指出以什么位置为基准进行移动,用下列符号或数字表示:(1)文件开始位置用SEEK_SET或0表示。(2)文件当前位置用SEEK_CUR或1表示。(3)文件末尾位置用SEEK_END或2表示。以文件开始位置为基准,偏移量只能是正值;以文件末尾位置为基准,偏移量只能是负值;以文件文件当前位置(即文件当前指针)为基准,偏移量可以是正值,也可以是负值。 下面是FSEEK函数调用的几个例子。FSEEK(FP,100L,SEEK_SET); /*将文件指针从文件开始移到第100字节处*/FSEEK(FP,50L,1); /*将文件指针从当前位置向文件尾移动50个字节*/FSEEK(FP,-50L,1); /*将文件指针从当前位置向文件头移动50个字节*/FSEEK(FP,-30L,2); /*将文件指针从文件末尾向文件头移动30个字节*/ 3.查询文件指针函数FTELL函数()该函数的调用的格式为:FTELL(文件类型指针);FTELL函数的返回值为文件开始处到当前指针处的偏移字节数。如果返回-1,则表示出错。 11.4.2 二进制随机文件对于随机文件,数据块的字节数必须是固定不变的,否则,无法计算出文件当前指针的位置。对于文本文件,因一行的字节数不等,一般不能用随机文件。随机文件可以随机读或写。【例11.5】从例11.3建立的FILE3.TXT文本文件中读取数据生成BFILE3.DAT二进制随机文件,然后将BFILE3.DAT文件在屏幕上显示出来。程序中以学生学号计算出每位学生信息的偏移量,然后应用FSEEK函数确定文件当前指针的位置。【例11.6】编写一个程序,对文件FILE3.DAT加密,加密方式是对文件中所有第奇数个字节的中间两个二进制位进行取反。 11.5 文件操作时的出错检测1.报告文件操作错误状态函数FERROR函数用于报告文件操作错误状态,其调用格式为:FERROR(文件类型指针);函数FERROR的功能是测试文件指针所指的文件是否有错误。如果没有错误,返回值为0;否则,返回一个非0值,表示出错。 2.清除错误标志函数CLEARERR函数用于清除错误标志,调用格式为:CLEARERR(文件类型指针);该函数清除FP所指的文件的错误标志,即将文件错误标志和文件结束标记置为0。在用FEOF和FERROR函数检测文件结束和出错情况时,遇到文件结束或出错,两个函数的返回值均为非0值。对于出错或已结束的文件,在程序中可以有两种方法清除出错标记:调用CLEARERR函数清除出错标记,或者对出错文件调用一个正确的文件读写函数。【例11.7】从键盘上输入一个长度小于20的字符串,将该字符串写入文件FILE4.TXT中,并测试是否有错。若有错,则输出错误信息,然后清除文件出错标记,关闭文件。否则输出刚才输入的字符串。 11.6 文件应用举例【例11.8】从FILE5.TXT文件中读出信息,再将信息逆序写到FILE6.TXT文件中。【例11.9】有两个磁盘文件FILE7.TXT和FILE8.TXT,各存放一行已经按升序排列的字母(不多于20个),要求依然按字母升序排列,将两个文件中的内容合并,输出到一个新文件FILE9.TXT中去。 【例11.10】在NUMBER.DAT文件中放有10个不小于2的正整数,编写程序实现:(1)在PRIME函数中判断和统计10个整数中的素数以及个数。(2)在主函数中将全部素数以及素数个数追加到文件NUMBER.DAT的尾部,同时输出到屏幕上。【例11.11】将SINX在(I=0,1,2,…,359)上的值保存在文件DSIN.DAT中,并从该文件中读取数据,以这些数据为基础,计算SINX在[0,2Π]上的定积分。 本 章 小 结1.在文件操作方面,C语言与其他高级语言的不同之处在于:C语言没有提供单独的文件操作语句,有关文件的操作均是通过库函数进行的。2.在C语言中引入了流(STREAM)的概念。它将数据的输入/输出看作是数据的流入和流出,这种把数据的输入/输出操作对象抽象化为一种流,而不管它的具体结构的方法很利于编程。在C中流可分为两大类,即文本流(TEXT STREAM)和二进制流(BINARY STREAM)。所谓文本流是指在流中流动的数据是以字符形
文档评论(0)