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     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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM