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