- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二、CC的文件结束符处理特性
“文件结束符”!t/
一、引言 for{x=7a’:x=’d’:x++)
效率高、功能强著称的c/c++语言,使不少人至今仍 个字符“abcd”$/
误认为它对文件的读写处理完全类同其它计算机语言;只需 fclose(fp):/$关闭文件(并使其长度为9)}/
)
用fopen函数开启某文件,即可放心读写此文件;而只要用
fcl08e函数关闭该文件,则此文件总可放心大吉。 二、C/C++的文件结束符处理特性
事实果真如此吗?答案是否定,而程序E9001.c可算是
“文件结束符未必能使文件正常结束”咄咄怪事的出
其典型示例。它所得文件f1.dat中存放的数据会令不少人大
现,皆因c/c++对文件结束符处理独具鲜为人知的特性,
吃一惊:竟然不是人们所预想的“ABcD”,而是不可思议的
“ABcDabcd,, (注意:在“ABcD”与“abcd,,间存放了一个
入的文件结束符才能使文件正常结束(因它才可决定文件长
居然不能使文件正常结束的“文件结束符”,故其文件长度
度);而其它任何时候写入文件的字符(包括文件结束符)
是9字节而非4字节”)!
都不可使文件正常结束(因它们均无力决定文件长度)。这
/*示例程序1:Eg001.Cf“文件结束符”未必能使文件正常
结束的示例程序)*/
h
样incIudestdio 结束符,而与其它位置所写入字符(包括文件结束符)无
inti:
关”。因此,这种文件结束符处理特性使C/c++已大不同
Char x:
FILE*fp:/{定义字符型变量,文件指针*/ 于其它计算机语言,人们再不能简单地认为它们“只需用
void
main(){
cIrsc…: /$清屏{/
闭该文件,必可安然无恙”。
dat”,”wb”):
fp=fopen(”f1 /$仓l建文件$/
fo
r《x=7A7:×=’D7:x++) 三、C/C++文件结束符处理特性的影响与规避
{叫ntf(”%c”,x):fwrite《x,1,1,fp):}/{首先写入头4
个字符“ABCD”m/
在实际编程中,设计者如果没有认识到C/c++文件结
×={char)3:/{取得文件结束符(其ASC||码为3)t/
叫ntf(”%c”,x): /$准备写入第5个字符$/ 束符处理特性的存在,就难免使所编写的程序可能出现设计
fwrite(x,1,1,fp):/}强行写入一个不能使文件结束的 错误和严重隐患(例如:试图根据所读写字符是否为文件结
图
模式+/
束符(或ASC码是否为3),或者利用feof函数来监控文件的
IastdatumisdoubIe
结束,就时常出现失误、失控、失败)。当然,编程时设计者 printf{”The wrongly:”)
文档评论(0)