Chinaunix首页 | 论坛 | 博客
  • 博客访问: 710876
  • 博文数量: 165
  • 博客积分: 8218
  • 博客等级: 中将
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-07 19:48
文章分类

全部博文(165)

文章存档

2014年(4)

2011年(3)

2010年(6)

2009年(43)

2008年(109)

分类: C/C++

2009-05-10 19:30:07

在如下一段测试程序中,得不到两次输入的结果:(只输入一次就结束了)
#include
void main()
{
 char c;
 int i;
 scanf("%c",&c);
 i = getchar();//如果scanf以回车结束,i将得到scanf输入中的回车符。
 printf("%c\n",c);
 printf("%d\n",i);//打印回车符的十进制数
}
在scanf()语句后,如果是scanf()得到一个字符、或者是getchar()语句将出错。
解决方法:
1、在scanf语句后加一条fflush(stdin);,其作用是清除输入缓冲,为防止输入的内容被缓冲到下一个环节做为输入,导致实际输入没有起作用。
2、在scanf语句后加一条getchar();,把遗留下来的回车符、空格或TAB符提取,保证后面的输入有效。
阅读(1485) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~