C Primer Plus 第8章 字符輸入/輸出和輸入確認 8.2 緩衝區

8.2  緩衝區程序

當您在一些系統上運行前面的程序時,您所輸入的文本當即回顯。也就是說,一個可能的運行示例以下所示:方法

HHeelllloo,,tthheerree..II wwoouulldd[enter]計算機

lliikkee aa#di

前面描述的行爲是例外的。在大多數系統上,在您按下回車鍵以前什麼都不會發生,正如在第一個例子中所示。文件

輸入字符的當即回顯是非緩衝(unbuffered)或直接(direct)輸入的一個實例,它表示您所鍵入的字符對正在等待的程序當即變爲可用。時間

相反,延遲迴顯是緩衝(buffered)輸入的實例,這種狀況下您所鍵入的字符被收集並存儲在一個被稱爲緩衝區(buffer)的臨時存儲區域中按下回車鍵可以使您所鍵入的字符 對程序變爲可用鍵盤

爲何須要緩衝區?首先,將若干個字符做爲一個塊傳輸比逐個發送這些字符耗費時間少其次,若是您輸入有誤,就能夠使用您的鍵盤更正功能來修正錯誤。當最終按下回車鍵時,您就能夠發送正確的輸入。字符

緩衝分爲兩種:徹底緩衝(fully buffered)I/O和行緩衝(line-buffered)I/O。對徹底緩衝來講,緩衝區滿時被清空(內容被髮送至其目的地)。這種類型的緩衝一般出現 在文件輸入中。緩衝區的大小取決於系統,但512字節和4096字節是常見的值。對行緩衝I/O來講,遇到一個換行字符時將被清空緩衝區。鍵盤輸入是標準的行緩衝,所以按下回車鍵將清空緩衝區。錯誤

不存在調用非緩衝輸入的標準ANSI方式;使用的方法取決於計算機系統。實例

相關文章
相關標籤/搜索