原帖由 hackobe 于 2005-12-30 17:10 发表
linux下,ctrl + D 是 输入 EOF 的意思。
输入 123 然后 ctrl +D 是表示 结束 123 的输入,此时 EOF 是对 “123”这个输入而言;
如果单独输入 ctrl + D 则 EOF 是对 程序而言,所以退出。
若是 123 ctrl + D ...
原帖由 tianjiao08 于 2005-12-30 14:57 发表
int c;
while ( (c = getchar())!= EOF)
putchar(c);
我用gcc编译了该代码(cygwin), 运行,有个疑问
当输入 123 CTRL+D 并按回车 之后, 我认为结果应是123并马上退出循环,
但实际并未退出,若单独 ...
原帖由 rainballdh 于 2005-12-31 10:55 发表
当输入 123 CTRL+D 并按回车 之后,OS会认为你输入的是123 CTRL+D,即(c='123 CTRL+D')!=EOF,不会推出循环。
如果你单独输入CTRL+D,(c='CTRL+D')==EOF当然就要退出
原帖由 tianjiao08 于 2005-12-31 18:24 发表
我觉得不是,getchar()返回的是第一个输入自符,他首先读入 1 ,输出,当缓冲非空时,继续读入,直到缓冲为空,因此,应该是他读到 ctrl+d 时并未把它当成eof,但为什么这样我就不清楚了,还请高人指教
原帖由 tianjiao08 于 2005-12-31 18:24 发表
我觉得不是,getchar()返回的是第一个输入自符,他首先读入 1 ,输出,当缓冲非空时,继续读入,直到缓冲为空,因此,应该是他读到 ctrl+d 时并未把它当成eof,但为什么这样我就不清楚了,还请高人指教
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |