【求助】while((c=getchar())!=EOF)这个循环什么时候结束?

HeBanBei 2012-12-22 09:09:50

int c;
while((c=getchar())!=EOF)
putchar(c);


《the c primer plus》 中的一段代码。

试了一下,死循环了。不知怎么结束?
...全文
837 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24189349 2015-01-14
  • 打赏
  • 举报
回复
还是不明白为何是死循环,哪个能帮帮我
aokaniya 2014-08-08
  • 打赏
  • 举报
回复
明白了,这是因为输入了两个字符
aokaniya 2014-08-08
  • 打赏
  • 举报
回复
int c; while((c=getchar())!='EOF') putchar(c); 上面是源码。 比如当我输入a,按enter键,然后下行输出a。问题不是这个,关键是输出a后,光标会移到下一行!这是为什么,请教下各位?
wangweifb 2013-11-06
  • 打赏
  • 举报
回复
引用 19 楼 wrightman 的回复:
用CTRL+Z 后输入ENTER,输入ENTER后getchar读取缓存中的数据,读取到CTRL+Z后退出。
讲的太好了啊
wrightman 2013-10-31
  • 打赏
  • 举报
回复
用CTRL+Z 后输入ENTER,输入ENTER后getchar读取缓存中的数据,读取到CTRL+Z后退出。
肩膀有伤 2012-12-27
  • 打赏
  • 举报
回复
做了实验,用printf输出 ascii码,最后总是输出一个10,是enter键换行符的ascii值,如果输入的字符之后,先输入EOF即ctrl+Z然后再enter键,这样就没有10,也就是在ctrl+Z之后enter才是回车符,第一个EOF应该理解成只是当前输入结束,而且程序还可以继续读取输入的字符,然后再单独敲一个EOF才是程序读到的EOF,这是个人理解,望大神指教。
HeBanBei 2012-12-27
  • 打赏
  • 举报
回复
引用 16 楼 zzx119119 的回复:
我苦苦的思索了两天,也没有明白为什么要用两个ctrl+Z 才能结束,有高手希望回答一下啊
ctrl+Z产生了EOF。
肩膀有伤 2012-12-27
  • 打赏
  • 举报
回复
我苦苦的思索了两天,也没有明白为什么要用两个ctrl+Z 才能结束,有高手希望回答一下啊
HeBanBei 2012-12-23
  • 打赏
  • 举报
回复
引用 14 楼 worldy 的回复:
没有回车,就没有输入吧
我最后都有回车的。
worldy 2012-12-23
  • 打赏
  • 举报
回复
没有回车,就没有输入吧
a5156520 2012-12-23
  • 打赏
  • 举报
回复
引用 11 楼 HeBanBei 的回复:
引用 10 楼 a5156520 的回复:引用 9 楼 HeBanBei 的回复: 引用 6 楼 a5156520 的回复:引用 3 楼 HeBanBei 的回复: 引用 1 楼 turingo 的回复:按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。 CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 ……
你说的这个,我也遇到过,另起一行输入CTRL+Z才会结束。在一次输入中未按回车ctrl+z无效,要回车之后,单独在一行开始输入ctrl+z才结束。这个我也不清楚,太高深了。
a10188088 2012-12-23
  • 打赏
  • 举报
回复
你说的这个,我也遇到过,另起一行输入CTRL+Z才会结束。在一次输入中未按回车ctrl+z无效,要回车之后,单独在一行开始输入ctrl+z才结束。这个我也不清楚,太高深了。
HeBanBei 2012-12-23
  • 打赏
  • 举报
回复
引用 10 楼 a5156520 的回复:
引用 9 楼 HeBanBei 的回复: 引用 6 楼 a5156520 的回复:引用 3 楼 HeBanBei 的回复: 引用 1 楼 turingo 的回复:按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。 CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 这里面有什么学问? 学问不清楚,我知道一些看到的。 the ……
比如,我输入:dsfds然后是CTRL+Z然后按回车。 这样本来也应该结束循环吧。但是,我还可以再输入,而且还在循环中。
a5156520 2012-12-22
  • 打赏
  • 举报
回复
引用 9 楼 HeBanBei 的回复:
引用 6 楼 a5156520 的回复:引用 3 楼 HeBanBei 的回复: 引用 1 楼 turingo 的回复:按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。 CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 这里面有什么学问? 学问不清楚,我知道一些看到的。 the c primer ……
你说的别的字符是什么? 除了EOF的外的字符都读取。
HeBanBei 2012-12-22
  • 打赏
  • 举报
回复
引用 6 楼 a5156520 的回复:
引用 3 楼 HeBanBei 的回复: 引用 1 楼 turingo 的回复:按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。 CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 这里面有什么学问? 学问不清楚,我知道一些看到的。 the c primer plus 书上写清楚了。p191. ctrl + d unix……
CTRL+C 的确是窗口关闭。 但是,CTRL+Z 为什么如果之前有别的字符输入的话就不跳出循环呢?
Binzo 2012-12-22
  • 打赏
  • 举报
回复
while((c=getchar())!=EOF){ putchar(c); if('q' == c) break; }
a5156520 2012-12-22
  • 打赏
  • 举报
回复
引用 3 楼 HeBanBei 的回复:
引用 1 楼 turingo 的回复:按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。 CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 这里面有什么学问?
学问不清楚,我知道一些看到的。 the c primer plus 书上写清楚了。p191. ctrl + d unix系统下 产生EOF的快捷键 ctrl+c dos下关闭窗口的快捷键 ctrl+z dos下产生EOF的快捷键 另外 getchar()是接受一个输入字符,返回一个整数值,EOF也是一个值,所以getchar()!=EOF的意思就是检测到文件结尾就停止读取字符。 这是本人的理解,希望对你有帮助。
图灵狗 2012-12-22
  • 打赏
  • 举报
回复
不同的操作系统,这些组合键的功能定义不同。
引用 3 楼 HeBanBei 的回复:
引用 1 楼 turingo 的回复:按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。 CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 这里面有什么学问?
HeBanBei 2012-12-22
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
按CTRL+D或者是CTRL+C或者是CTRL+Z组合键。
CTRL+D 不行。 CTRL+C 可以。窗口关闭。 CTRL+Z 可以,窗口不关闭,程序结束。 这里面有什么学问?
HeBanBei 2012-12-22
  • 打赏
  • 举报
回复
jiong了。一楼中的书名应该是《The C Programming Language》
加载更多回复(1)

69,373

社区成员

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

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