Chinaunix首页 | 论坛 | 博客
  • 博客访问: 256569
  • 博文数量: 54
  • 博客积分: 2915
  • 博客等级: 少校
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-21 12:20
个人简介

这个人很懒,什么都没有留下

文章分类
文章存档

2013年(1)

2012年(6)

2011年(11)

2010年(16)

2009年(20)

我的朋友

分类: C/C++

2010-10-27 15:46:00

下面一些内容摘录自百度百科:
与EOF的区别
  在stdio.h中可以看到如下定义:
  #define EOF (-1)
  #define _IOEOF 0x0010
  #define feof(_stream) ((_stream)->_flag & _IOEOF)
  int c;
  while(!feof(fp))
  {
  c = fgetc(fp);
  printf("%X\n", c);
  }
  会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
  正确的写法应该是:
  int c;
  c = fgetc(fp);
  while(!feof(fp))
  {
  printf("%X\n", c);
  c = fgetc(fp);
  }
  feof()可以用EOF代替吗?不可以。fgetc返回-1时,有两种情况:读到文件结尾或是读取错误。因此我们无法确信文件已经结束, 因为可能是读取错误! 这时我们需要feof()。
这样,基本对feof有一定的了解了。
阅读(1240) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-28 18:09:15

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com