flushall()函數
如下所示的一個非常簡單的程序.
1 #include 2 void main(void) 3 { 4 char cA,cB; 5 printf("input cA and cB:\n"); 6 scanf("%c",&cA); 7 scanf("%c",&cB); 8 printf("Now they are:%c\t%c\n",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:\n"); 6 scanf("%c%c",&cA,&cB); 7 8 printf("Now they are:%c\t%c\n",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:\n"); 6 scanf("%c",&cA); 7 flushall(); 8 scanf("%c",&cB); 9 printf("Now they are:%c\t%c\n",cA,cB); 10 }
和程序1比較我們能明顯看見加了一個flushall();在輸入了A然后按了回車之后.
此處,flushall的用處是清除了回車.
然后我們接着輸入B.回車.
結果一樣正確!
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/60641/showart_483344.html