当前位置: 代码迷 >> C语言 >> [求助]关于C语言的while循环
  详细解决方案

[求助]关于C语言的while循环

热度:312   发布时间:2007-06-12 20:30:30.0
[求助]关于C语言的while循环

大家看下面两个循环
(1)while(scanf("%d",&hr)!=1)
{
while((ch=getchar())!='\n')putchar(ch);
printf(" is not a valid value.");
}

(2)while(scanf("%d",&hr)!=1)
{
printf(" is not a valid value.");
}

这两个循环的作用是如果输入的不是整数,那么给出提示并要求重新输入,只是第一个循环多了回显用户错误的输入。
我想在某些场合不需要回显错误,所以删除了while((ch=getchar())!='\n')putchar(ch);语句。
但是在调试运行中发现,第二个循环是个死循环。
为什么第一个循环行,第二个不行?回显语句对循环有什么影响?

搜索更多相关的解决方案: C语言  value  printf  putchar  

----------------解决方案--------------------------------------------------------
while((ch=getchar())!='\n')的作用主要是清空输入缓冲区,因为用户输入时在缓冲区留下了一个回车'\n',如果不清除掉scanf("%d",&hr)永远跳不过这个回车。你不需要回显错误改成这样就行了:
while(scanf("%d",&hr)!=1)
{
while((ch=getchar())!='\n');
printf(" is not a valid value.");
}

----------------解决方案--------------------------------------------------------
仅在while语句后以单独的分号形成了空语句

----------------解决方案--------------------------------------------------------
看懂了在说话
----------------解决方案--------------------------------------------------------
谢谢各位,其实这是信息残余问题。
----------------解决方案--------------------------------------------------------
同意2楼
----------------解决方案--------------------------------------------------------

第二题只要输入是不为1,其他的输出都是可以的是个死循环
第一个只要输入不为1,而且是字符直到遇到空格是才输出的,所以不是死循环


----------------解决方案--------------------------------------------------------
2楼好样的
----------------解决方案--------------------------------------------------------

百年对c确实比一般人要理解深刻
当然包括偶


----------------解决方案--------------------------------------------------------
  相关解决方案