c语言读写文件 eof,C语言文件操作之EOF解析

本文详细解析了C语言中EOF(文件结束符)的概念,指出EOF并非文件末尾的标志,而是当尝试读取文件末尾时返回的-1。文章通过示例代码解释了使用fgetc函数时可能出现的误判情况,并建议使用int类型变量避免这种情况。同时,讨论了feof函数的工作原理,以及如何正确使用它来判断文件是否到达末尾。
摘要由CSDN通过智能技术生成

作者:海子      出处:http://www.cnblogs.com/dolphin0520/

C语言文件操作解析(五)之EOF解析

在C语言中,有个符号大家都应该很熟悉,那就是EOF(End of File),即文件结束符。但是很多时候对这个理解并不是很清楚,导致在写代码的时候经常出错,特别是在判断文件是否到达文件末尾时,常常出错。

1.EOF是什么?

在VC中查看EOF的定义可知:

#define EOF     (-1)

EOF只是代表一个整形常量-1。因此很多人认为在文件的末尾存在这个结束标志EOF,这种观点是错误的。事实上在文件的末尾是不存在这个标志的。那么有人会问那下面的程序如何解释?

char ch; while((ch=fgetc(fp))!=EOF) { printf("%c\n",ch); }

书上都通过这样的代码去判断是否读取到文本文件末尾,就是当读取到EOF的时候就结束操作。这种理解是错误的。

/*

此段不属于原文内容,添加上去是为了更好补充此处的说明

例如:下面这段这个文本文件的磁盘内容,文件末尾并没有-1.

0818b9ca8b590ca3270a3433284dd417.png */

先看一下函数fgetc的原型:

int fgetc(FILE *fp);

事实上在fgetc函数内部,每次都是读取一个字节的数据,而且这一个字节的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值