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方式;使用的方法取決於計算機系統。實例