您所在的位置:Seago-Microsoft Windows>>Windows管理脚本>> C

C

作者:admin 来源:新浪爱问 日期:2008-04-17 

#include <stdio.h>
void main()
{
char i,j;
puts("input i:");
scanf("%c",&i);//假设输入a
printf("i=%c\n",i);//输入i=a
puts("input j:");
scanf("%c",&j);//跳过
printf("j=%c\n",j);//输出j=
}
假如在第一个scanf时输入ab,结果是i=a,j=b;
问题为什么不能分开输入呢?
电脑问题网给出的最佳答案 scanf函数连续调用时,就会出现这种情况,应该算是它的一个bug吧。

scanf函数使用stdin输入缓冲区。第一次scanf时,输入一个字符回车,变量可以得到赋值。但是第2次scanf时,如果类型是char型,变量得到的是'\n'。

就是说scanf是从键盘缓冲区中连续取得内容的,所以,多次使用时,scanf得到的可能是上次键盘输入缓冲区中的东西。

所以,为保证正确,多次使用scanf时,应该在每次scanf之前加上一句: fflush(stdin); 即可。

函数解释:
int fflush(FILE *stream)
关闭一个流,并对缓冲区作处理。成功返回0
谢谢你的回答,很详细也很清楚.没剩多少分了,只能给你5,虽然少,但却很感激!

上一篇:java解答(如何编写)   下一篇:帮帮我