Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18972
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-30 17:57
文章分类
文章存档

2014年(10)

我的朋友

分类: C/C++

2014-09-01 12:39:37

原文地址:C语言中scanf的后遗症 作者:sparkzh

在如下一段测试程序中,得不到两次输入的结果:(只输入一次就结束了)
#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符提取,保证后面的输入有效。
阅读(1034) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~