Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37722
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 357
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-20 16:26
文章分类

全部博文(41)

文章存档

2014年(41)

我的朋友

分类: C/C++

2014-05-02 15:09:31

int feof(FILE *stream);
feof(fp)遇到文件结束返回0,未结束为非0.
在stdio.h中可以看到如下定义:
#define EOF (-1)
#define _IOEOF 0x0010
#define feof(_stream) ((_stream)->_flag & _IOEOF)

使用以下的语句读取数据,(发现会把EOF也读出来)
while(!feof(fp))
{
c = fgetc(fp);
printf("%X\n", c);
}
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
使用feof判断结尾时需要注意这一点。

阅读(206) | 评论(0) | 转发(0) |
0

上一篇:fork进程创建。。。

下一篇:pthread线程

给主人留下些什么吧!~~