使用fgetc读取文件合理判断文件结束

char c;
while ((c = fgetc (rfp))!= EOF);
当文件结束时fgetc函数返回的是EOF,即-1,也就是0xff。而如果数据文件中恰好有数据0xff,则返回的也是0xff,那么上面的代码会误判为文件结束。
问题在哪里?
请看fgetc函数的原型:int fgetc ( FILE * stream );
实际上,getc 以 unsigned char 的方式读取文件流, 扩张为一个整数,并返回. 换言之, getc 从文件流中取一个字节, 并加上24个零,成为一个小于256的整数, 然后返回。
如果用下面的代码就不会出现误判文件结束的问题
int c;
while ((c = fgetc (rfp))!= EOF);

分享到: 更多
版权申明:

本站保留所有原创文章的版权,本站地址:奔跑的博客[http://www.elecbench.com]

原创文章转载时请注明出处,并添加文章所在页面的链接:http://www.elecbench.com/%e4%bd%bf%e7%94%a8fgetc%e8%af%bb%e5%8f%96%e6%96%87%e4%bb%b6%e5%90%88%e7%90%86%e5%88%a4%e6%96%ad%e6%96%87%e4%bb%b6%e7%bb%93%e6%9d%9f/

本站所有 2010年3月4日 以后发表、未标明为“转载”的文章均是本站原创。

发表评论


(设置自己的个性头像)

*

申请属于你的免费顶级域名