关于EOF的问题

novice2008 2009-02-12 06:16:03
#include <stdio.h>
int main()
{
char ch;
while((ch = getchar()) != EOF)
putchar(ch);
return 0;
}

为什么我输入CTRL+Z没反应呢?连屏幕上显示^z都没有
...全文
163 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaoyue2046 2009-07-07
  • 打赏
  • 举报
回复
终于找到一个和我问题一样的,不知lz问题解决了没有

如果解决了,麻烦告诉我一下,不胜感激啊
Linux校园社区 2009-02-15
  • 打赏
  • 举报
回复
修改下:
是Ctrl+Z,回车,Ctrl+Z,再回车。
Linux校园社区 2009-02-15
  • 打赏
  • 举报
回复
回车,Ctrl+Z,再回车。
thinkboy234 2009-02-15
  • 打赏
  • 举报
回复
我怎么按着没问题
ctrl+z,回车
guojing1009 2009-02-13
  • 打赏
  • 举报
回复
Ctrl+Z应该就退出循环了吧,我还看了个方法,好象是按alt+65535
novice2008 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wyswyg63 的回复:]
引用 4 楼 icemine 的回复:
因为getchar()将输入字符放入了线性缓冲区中,所以Ctrl+Z后要回车
在一个,如果是Unix/Linux下,一般使用Ctrl+D
再一个可能是,
因为EOF为-1,可能会有些系统把char 默认做unsined char,这样的话,ch就不会接受到-1了,
所以很多人也会将char ch 换作 int ch;

顶啊,getchar返回的是int类型,应该int ch;声明
[/Quote]
这和int,char 没关系,至少屏幕上总会显示吧
novice2008 2009-02-13
  • 打赏
  • 举报
回复
eclipse CTRL-Z是撤销,CTRL-Y是前进

现在能前进不能撤销。。。

也不是键盘问题,这是怎么回事呢。。。。
wyswyg63 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 icemine 的回复:]
因为getchar()将输入字符放入了线性缓冲区中,所以Ctrl+Z后要回车
在一个,如果是Unix/Linux下,一般使用Ctrl+D
再一个可能是,
因为EOF为-1,可能会有些系统把char 默认做unsined char,这样的话,ch就不会接受到-1了,
所以很多人也会将char ch 换作 int ch;
[/Quote]
顶啊,getchar返回的是int类型,应该int ch;声明
waizqfor 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 novice2008 的回复:]
我特地去下个TC,换了键盘试试,还是这样,这是怎么回事
[/Quote]

都换键盘了啊 无奈啊
晕了 我是搞不明白了
novice2008 2009-02-12
  • 打赏
  • 举报
回复
我特地去下个TC,换了键盘试试,还是这样,这是怎么回事
waizqfor 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 novice2008 的回复:]
引用 5 楼 waizqfor 的回复:
我刚才试了下LZ的程序 不可能没有^Z的符号啊
难道LZ是linux下的吗 如果是的话 那就ctrl+D 解决

不是LINUX,会不会是程序以外的问题?我以前完全可以用的呀
[/Quote]
估计是 我从来没有你这样的事 不行装下编译器吧 我刚才都是拿VC6给你实验的 没啥问题
novice2008 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 waizqfor 的回复:]
我刚才试了下LZ的程序 不可能没有^Z的符号啊
难道LZ是linux下的吗 如果是的话 那就ctrl+D 解决
[/Quote]
不是LINUX,会不会是程序以外的问题?我以前完全可以用的呀
waizqfor 2009-02-12
  • 打赏
  • 举报
回复
我刚才试了下LZ的程序 不可能没有^Z的符号啊
难道LZ是linux下的吗 如果是的话 那就ctrl+D 解决
冰矿 2009-02-12
  • 打赏
  • 举报
回复
因为getchar()将输入字符放入了线性缓冲区中,所以Ctrl+Z后要回车
在一个,如果是Unix/Linux下,一般使用Ctrl+D
再一个可能是,
因为EOF为-1,可能会有些系统把char 默认做unsined char,这样的话,ch就不会接受到-1了,
所以很多人也会将char ch 换作 int ch;
na2650945 2009-02-12
  • 打赏
  • 举报
回复
学习了。
Claude 2009-02-12
  • 打赏
  • 举报
回复
up……
waizqfor 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 novice2008 的帖子:]
#include <stdio.h>
int main()
{
char ch;
while((ch = getchar()) != EOF)
putchar(ch);
return 0;
}

为什么我输入CTRL+Z没反应呢?连屏幕上显示^z都没有
[/Quote]
LZ ctrl+z 再按回车

69,371

社区成员

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

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