輸入緩衝:小程序
先來看一個回顯小程序echo,它把用戶輸入的字符顯示到屏幕上spa
//echo.c
#include<stdio.h> int main() { int ch; while((ch=getchar())!=EOF) { putchar(ch); } }
運行結果以下(按ctrl+d 退出循環,程序結束)3d
這個程序在不一樣系統上還有一個可能的結果是code
hheellooblog
這通常是例外狀況,在大多數系統上,在按下回車以前什麼都不會發生,正如第一種結果所示。字符串
輸入字符當即回顯非緩衝(unbuffered)或直接(direct)輸入的一種實例,它表示輸入的字符對正在等待的程序當即變爲可用。get
反之,延遲迴顯的是緩衝(buffered)輸入的實例,這種狀況下所輸入的字符被收集並存儲在一個被稱爲緩衝區(buffer)的臨時存儲區域當中,當按下回車時所輸入的字符塊對程序變爲可用,因而便一塊兒顯示到了屏幕上。io
緩衝區的做用:class
1.將若干個字符做爲一個塊傳輸比逐個發送這些字符的耗時少循環
2.若是輸入有誤,可用使用delete鍵進行修改
非緩衝輸入的適用性:一些交互式程序,但願按下鍵就執行某個命令
緩衝又能夠分爲兩類:
徹底緩衝I/O:緩衝區滿時被清空(內容被髮送至其餘目的地),這類緩衝一般出如今文件輸入中
行緩衝I/O:遇到換行符時清空緩衝區,鍵盤是標準的行緩衝,按下回車鍵將清空緩衝區
重定向:
默認狀況下使用標準IO包的C程序將標準輸入做爲其輸入流,這個流是做爲向計算機中讀取數據的常規方式創建的,如今通常是咱們的鍵盤。同理標準輸出流通常是咱們的顯示器。
然而咱們能夠將標準輸入輸出流重定向分配至文件
如今用mywords文件(隨便建的一個文件,輸入了一些字符)代替鍵盤做爲咱們的輸入使用echo
果真echo程序把mywords中的內容顯示出來了
<符號是Unix、Linux、DOS的重定向運算符,該運算符把mywords文件和標準輸入流關聯了起來,將該文件的內容引導至echo程序。
同理也可使用>符號實現輸出流重定向到文件
能夠看到程序把咱們從鍵盤輸入的字符串輸出到了myword當中,而不是回顯在屏幕上了
參考:C primer plus