EOF的问题?

cnbj8607 2010-04-11 10:02:02

#include "stdio.h"
#include "stdlib.h"
void main()
{
int ch;
ch=getchar();
while(ch!=EOF)
{
putchar(ch);
ch=getchar();
}
system("pause");
}

这是The C Programming Language中第一章的例题,标题为文件复制!

没有打开或关闭任何一个文件?如何实现文件的复制呢!
feof(ch)可以检查ch是否指向文件结尾处,EOF的作用是什么呢?

谢谢!
...全文
128 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingstarer 2010-04-11
  • 打赏
  • 举报
回复
1 需要通过输入输出重定向才能实现文件复制
2 feof(ch)编译不过 你查一下用法就知道了
3 extern FILE *fp; while (!feof(fp)) {...}这样写会复制多一个字符(行)
borden 2010-04-11
  • 打赏
  • 举报
回复
遇到CTRL+Z(windows上)或者CTRL+D(Linux),那么就是遇到EOF,
EOF 是一个宏 ,一般定义为-1(查下msdn 看它的定义)
用来判断文件结束的标记(end of file)
用在文件操作中
kingteng 2010-04-11
  • 打赏
  • 举报
回复
这是在标准输入上读入,如果在标砖输入上遇到CTRL+Z(windows上)或者CTRL+D(Linux),那么就是遇到EOF
  • 打赏
  • 举报
回复
我看这本书时也遇到同样问题,不知道EOF是什么意思,具体,输入的时候什么字符表示EOF呢?
pengzhixi 2010-04-11
  • 打赏
  • 举报
回复
EOF应该是被定义为文件结束的标记吧.不过这个移植性是个问题.
东大坡居士 2010-04-11
  • 打赏
  • 举报
回复
可能是将标准输入输出重定向到文件了
昵称很不好取 2010-04-11
  • 打赏
  • 举报
回复
可能需要对照上下文看,楼主明白这程序什么意思就行了
Vmary 2010-04-11
  • 打赏
  • 举报
回复
EOF也有 返回值的。

通常大多数编译器为-1。
stardust20 2010-04-11
  • 打赏
  • 举报
回复
这边大概要把输入输出流分别重定向到两个文件。。。EOF也是检查是否到达文件尾的 == EOF就到文件尾了
ryangio 2010-04-11
  • 打赏
  • 举报
回复
引用之前有人在CSDN上发的一个帖子,或许对你有用
“实际上是对feof这个函数的处理方式不理解所造成的,实际上:

当feof(FILE *)读到EOF标志并不认为文件结束了,依旧返回0,直到读到EOF的下一个字符才返回1,这时才认为是文件结束。


文件出处见下面链接:
http://blog.csdn.net/sambian/archive/2006/03/30/644360.aspx
huanmie_09 2010-04-11
  • 打赏
  • 举报
回复
文件结束符检测文件指针是否已在尾部 EOF
EOF只是一个编译器事先约定好的常量,不是用来输入的.
在UNIX系统中用C语言对文件操作,文件结束符用组合键表示
EOF字符是^D (0x0d)
Win 中是^Z (0x1a)
vcprg 2010-04-11
  • 打赏
  • 举报
回复
在Unix里,按惯例,每当运行一个新程序时,所有的shell都为其打开三个文件描述符:标准输入,标准输出以及标准出错。

70,020

社区成员

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

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