while (getchar () !=‘\n’) continue求解

u012757050 2014-01-27 12:56:06
char ch
while ((ch = getchar ()) != ‘#’)
{
.....若干语句
while (getchar () !=‘\n’)
continue;

假如我输入dev,是不是只有d读入到ch?
第二个while语句是什么意思?是指getchar读取我之前输入的dev,然后全部舍弃吗?
问题补充:如果没有第二个while语句,当第一次输入dev,第二次输入a时,ch会赋予a吗?
...全文
385 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
文若欢 2014-01-27
  • 打赏
  • 举报
回复
如果代码是这样的话: char ch; while ((ch = getchar ()) != ‘#’) { .....若干语句 while (getchar () !=‘\n’) continue; } 那么意味着: 1、某行以#开头的话,结束处理。 2、ch在你所谓的“.....若干语句”中应该有进一步的操作;或者说,以非#字符开头的行的处理被你用“.....若干语句”省略掉了。 3、由于你的while(getchar()!='\n')continue;并没有将取得字符显示保存下来,所以表示在“……若干语句”中的处理之后,跳过了到行末尾的所有输入字符的处理。 4、如果你输入了dev后又敲了回车,并且在此程序内没有其他地方出现getchar()之类的函数的话,那么,显然,程序会对d进行“……若干语句)的处理,然后,跳过ev和回车键的输入,最后,接着等待您进行新的字符的输入,直到输入了#字符。
u012757050 2014-01-27
  • 打赏
  • 举报
回复
输入dev后回车,然后呢?
Carl_CCC 2014-01-27
  • 打赏
  • 举报
回复
主要的目的是,用户输入dev三个字符的时候,操作系统并不会吧输入立刻传送给程序,一定要遇到回车才会发送字符串,也就是说没有回车,你的程序,两个while都接受不到字符,但是呢\n回车并不是输入想要的,是辅助的,所以就特别处理 \n
图灵狗 2014-01-27
  • 打赏
  • 举报
回复
改用getch函数会比较符号你的要求。
引用 楼主 u012757050 的回复:
char ch while ((ch = getchar ()) != ‘#’) { .....若干语句 while (getchar () !=‘\n’) continue; 假如我输入dev,是不是只有d读入到ch? 第二个while语句是什么意思?是指getchar读取我之前输入的dev,然后全部舍弃吗? 问题补充:如果没有第二个while语句,当第一次输入dev,第二次输入a时,ch会赋予a吗?
空的 2014-01-27
  • 打赏
  • 举报
回复
第一个是 以# 为结束符,跳出循环 第二个是以\n 回车为结束符,跳出循环 看这写的就取了第一个字符,后面的不要了,若换行(\n)就再取一个,若第一个是#就退出吧

69,371

社区成员

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

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