eof用于文件结束和文件错误时的函数返回值,计算机本质上是如何靠eof判断是文件结束还是错误呢

weixin_45906870 2020-05-07 11:55:37
#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;
int ch;

if((fp = fopen("output.txt", "r")) == NULL)
{
fputs("打开文件失败!\n", stderr);
exit(EXIT_FAILURE);
}
while(1)
{
ch = fgetc(fp);
if (feof(fp)) //当循环进入到这行时,指针fp指向的内存上被设置了一个文件结束指示器
{
break;
}
putchar(ch);
}

if (ferror(fp)) //当循环进入到这行时,指针fp指向的内存上被设置了一个文件错误指示器
{
fputs("出错了!\n", stderr);
}
clearerr(fp);
if (feof(fp) || ferror(fp))
{
printf("啦啦啦啦!\n");
}
fclose(fp);

return 0;
}

我的理解对吗?
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qlaiaqu 2020-05-14
  • 打赏
  • 举报
回复
操作系统打开一个文件,会创建一个文件句柄,该文件句柄指向了一块内存描述该文件,其中包含了文件当前位置和文件的大小,feof只是判断文件位置是否表示已经在文件末尾了,然后返回结果。
weixin_45906870 2020-05-14
  • 打赏
  • 举报
回复
自顶
weixin_45906870 2020-05-10
  • 打赏
  • 举报
回复
有大佬帮忙解答一下吗?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧