結合getchar 理解緩衝區

2022-08-24 05:27:12 字數 1195 閱讀 7998

目錄

1、getchar()明明只能獲取乙個鍵盤輸入的字元,為什麼當我們輸入乙個字元後,並沒有進行輸出,而是全部輸入後,才進行輸出?

2、換行符後為什麼還有乙個換行符(ascii 為 10)

illustration

當程式呼叫getchar()函式時,程式就等著使用者按鍵,並等使用者按下回車鍵返回。期間按下的字元存放在緩衝區,第乙個字元作為函式返回值。繼續呼叫getchar()函式,將不再等使用者按鍵,而是返回您剛才輸入的第2個字元;繼續呼叫,返回第3個字元,直到緩衝區中的字元讀完後,才等待使用者按鍵。

notice

【行緩衝】在這種情況下,當在輸入和輸出中遇到換行符時,執行真正的i/o操作。這時,我們輸入的字元先存放在緩衝區,等按下回車鍵換行時才進行實際的i/o操作。典型代表是標準輸入(stdin)和標準輸出(stdout)。

緩衝區又稱為快取,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區。

【notice】標準c(ansi c)語言庫函式操作才會存在緩衝區。

當我們從磁碟中讀取資訊的時候,為了加快讀取速度,會先將資料放置到緩衝區,以減少磁碟的讀寫次數

緩衝區就是一塊記憶體區,它用在輸入輸出裝置和cpu之間,用來快取資料。它使得低速的輸入輸出裝置和高速的cpu能夠協調工作,避免低速的輸入輸出裝置占用cpu,解放出cpu,使其能夠高效率工作。

1、緩衝區滿時;

2、行緩衝區遇到回車時;

3、關閉檔案;

4、使用特定函式fflush()重新整理緩衝區。

因此,寫檔案(裝置檔案除外),並不會直接寫到檔案中,會先放在緩衝區,預設情況下,關閉檔案或者緩衝區滿後才寫到檔案。

緩衝區理解

在講緩衝區之前,我們要先介紹下記憶體的作用。記憶體是計算機中重要的部件之一,它是與cpu進行溝通的橋梁。計算機中所有程式的執行都是在記憶體中進行的,其作用是用於暫時存放cpu中的運算資料,以及與硬碟等外部儲存器交換的資料。也就是說 只要計算機在執行中,cpu就會把需要運算的資料調到記憶體中進行運算,...

緩衝區的理解

這裡所說的緩衝區指的是為標準輸入與標準輸出設定的緩衝區,為什麼要設定乙個標準輸入緩衝區主要是從效率上來考慮的,如果不設緩衝區會降低cpu的效率,因為它總是會在使用者輸入之後馬上會去執行某些指令,導致多次io開銷!同樣設定乙個標準輸出緩衝區是為了解決列印的問題!總之這樣做的目的就是為了效率!比如如果沒...

頂點緩衝區VBO和索引緩衝區IBO的結合使用

virtual void oninit 將記憶體中的頂點資料傳送進視訊記憶體 glbufferdata gl array buffer,sizeof pos pos,gl static draw 切換狀態 glbindbuffer gl array buffer,0 建立索引緩衝區 glgenbuf...