首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

getchar()在死循环中出现的有关问题

2012-04-25 
getchar()在死循环中出现的问题为什么完成一次循环后,屏幕会出现两行“Do you want to build a new node?”C

getchar()在死循环中出现的问题
为什么完成一次循环后,屏幕会出现两行“Do you want to build a new node?”


C/C++ code
int main(){  char c;  for(; ;){printf("Do you want to build a new node?\n");  c = getchar();  if(c == 'n')  break;  if(c != 'y' && c != 'n')  continue;  if(c == 'y')  printf("hello world\n");  }}


[解决办法]
探讨
引用:

因为有输入缓冲区残留的'\n'.
在 getchar()
之后加一句
rewind(stdin);

试了,不起作用,并且fflush(stdin)也试了,没效果

[解决办法]
探讨

引用:

把c = getchar();的改成:while((c=getchar())=='\n')试试看。

谢谢muyi66,你的办法行的通,但我有些问题不懂,
1.这个办法原理是什么?getchar不是一次接受1个字符吗,当我输入m,再敲'\n',还会接受吗?
2.我之前的两行代码是什么原因?即使接受了‘\n’,那为什么会输出相同两行?

[解决办法]
c = getchar();
 是等待输入字符,直到出现\n为止。 输入的字符先存放在缓冲区,然后把值一个一个的赋给c,你如果输入的是k,则先把k给c,然后再把\n赋给c,这样就会循环2次,打印2次。

热点排行