Unix文件尾有没有可能没有'EOF'? 怎么在屏幕上打印?

heasebyy 2005-09-07 04:33:28
文件末尾一定有'EOF'吗? UNIX下怎么打印出来?
...全文
286 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
heasebyy 2005-09-08
  • 打赏
  • 举报
回复
Wolf0403(完美废人)(CSDN,请不要侮辱 Linux)
意思文件中没有什么EOF,只是文件读到末尾,没有东西可读了就返回EOF
明白
Wolf0403 2005-09-08
  • 打赏
  • 举报
回复
魔王:『你尽管叫破喉咙吧,没有人会来救你的……』

EOF 就是那个『没有人』

Linux 系统中 read(2) 函数当读取到文件结尾的时候,会直接返回 0 而不写入任何数据到提供的 buffer 中,直接证明了 EOF 的『不存在』特性。
标准库中用 -1 标识 EOF 实际上只是一个额外的示意方法,根本不代表『文件结尾有 EOF 这么一个数据且这个值就是 -1』
heasebyy 2005-09-07
  • 打赏
  • 举报
回复
文件操作的时候文件while到最后的时候如果找不到'EOF'不是死循环了吗?
所以想确认fopen以后需不需要CheckEof()来检查一下'EOF'
fp = fopen("file","r")
/* CheckEof()need? */
while(!feof(fp))
{
.....
}
bugebear3 2005-09-07
  • 打赏
  • 举报
回复
EOF为-1;

在WINDOWS下面相当于CTRL+C;
在LINUX下面相当于CTRL+D;
snowbirdfly 2005-09-07
  • 打赏
  • 举报
回复
那你看一下
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

int main()
{
printf("%d",EOF);
system("PAUSE");
return 0;
}
看一下结果~~~
snowbirdfly 2005-09-07
  • 打赏
  • 举报
回复
是啊~
当然有了~
Windows下面假如不是文件读取,判断键盘输入结尾是通过Ctrl+Z(相当于EOF)
而在Unix下面是Ctrl+D(也相当于EOF)
而且都是-1
不信,你可以编个简单程序看一下EOF的值~~
weixuzhe 2005-09-07
  • 打赏
  • 举报
回复
系统检测到文件结尾时的返回值是EOF.
zhouhuahai 2005-09-07
  • 打赏
  • 举报
回复
应该是有的,打印它?有什么用处?
EOF的值是-1

70,037

社区成员

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

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