关于字符界面输入的时候EOF和'\n'的问题

软件和网站开发以及相关技术探讨
回复
头像
eatapple
帖子: 279
注册时间: 2011-02-23 9:08

关于字符界面输入的时候EOF和'\n'的问题

#1

帖子 eatapple » 2012-02-15 16:24

RT在看书的时候发现这样一个程序

代码: 全选

#include <stdio.h>

int main()
{
	int c;
	while((c=getchar())!=EOF)
		putchar(c);
	return 0;

}
在我的电脑上运行的时候是一个死循环,就是不会退出程序,实在在执行

如果我将

代码: 全选

while((c=getchar())!=EOF)
修改为

代码: 全选

while((c=getchar())!='\n')
那么程序就按照我想的那样执行一次就结束了。

我的问题是在字符界面输入的时候是不是没有那个EOF?如果是这样的话那岂不是书上写错了(不是我太相信书,而是这本书好像被别人吹的很牛B)?
头像
adam8157
帖子: 2794
注册时间: 2009-03-05 16:31
联系:

Re: 关于字符界面输入的时候EOF和'\n'的问题

#2

帖子 adam8157 » 2012-02-15 16:41

Ctrl-d
头像
eatapple
帖子: 279
注册时间: 2011-02-23 9:08

Re: 关于字符界面输入的时候EOF和'\n'的问题

#3

帖子 eatapple » 2012-02-15 16:43

这个我也知道啊 我想知道是EOF是否存 以及为什么
不过还是谢谢你的捧场 :em02
头像
guyanqiu
帖子: 360
注册时间: 2009-05-05 23:42

Re: 关于字符界面输入的时候EOF和'\n'的问题

#4

帖子 guyanqiu » 2012-02-15 16:59

eatapple 写了:这个我也知道啊 我想知道是EOF是否存 以及为什么
不过还是谢谢你的捧场 :em02
你看K&R 的书就知道了,EOF 的值是-1.

EOF(End-of-File)
It is a macro constant definition. It expands to a negative integral constant expression.
It is used as the value returned by several <cstdio> functions to indicate failure, either because the End-of-File has been reached in a reading operation or because an error happened.

附带个百度知道的解答:
http://zhidao.baidu.com/question/54039450.html
-----------------------
在迷茫中追逐,在追逐中迷茫……
-----------------------
lllluuukke
帖子: 291
注册时间: 2011-03-10 7:43

Re: 关于字符界面输入的时候EOF和'\n'的问题

#5

帖子 lllluuukke » 2012-02-18 11:14

EOF的定义应该在stdio.h里面
voxtrior
帖子: 307
注册时间: 2011-03-12 12:20
来自: xx省xx市

Re: 关于字符界面输入的时候EOF和'\n'的问题

#6

帖子 voxtrior » 2012-03-04 13:23

EOF EOLN 是不一样的 :em04 对于EOF 文件输入 文件输出有用
回复