flushall()函数
如下所示的一个非常简单的程序.
1 #include 2 void main(void) 3 { 4 char cA,cB; 5 printf("input cA and cB: "); 6 scanf("%c",&cA); 7 scanf("%c",&cB); 8 printf("Now they are:%c %c ",cA,cB); 9 }
本意思是从键盘接受两个字符,然后反馈到屏幕上.
比如我要输入A和B,那么希望得到的结果是Now they are:A B
但结果却只显示了:A
为什么是这样的结果呢?因为我们输入了一个A后会习惯性的按一个回车,告诉系统我输入了一个A.
但是编译系统却不这么认为,它会以为我们输了一个A,然后又输入了一个回车.
所以结果显示了一个A和一个看不见的回车.
又如以下这个程序:
1 #include 2 void main(void) 3 { 4 char cA,cB; 5 printf("input cA and cB: "); 6 scanf("%c%c",&cA,&cB); 7 8 printf("Now they are:%c %c ",cA,cB); 9 }
我们连续输入AB.然后回车,则会显示A B.
所以在输入字符型变量时务必小心.
其实我们也可以借助flushall()函数来解决这个问题.
flushall()函数能清除键盘缓冲区的内容.程序如下:
1 #include 2 void main(void) 3 { 4 char cA,cB; 5 printf("input cA and cB: "); 6 scanf("%c",&cA); 7 flushall(); 8 scanf("%c",&cB); 9 printf("Now they are:%c %c ",cA,cB); 10 }
和程序1比较我们能明显看见加了一个flushall();在输入了A然后按了回车之后.
此处,flushall的用处是清除了回车.
然后我们接着输入B.回车.
结果一样正确!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60641/showart_483344.html