C C 三個標準裝置檔案控制代碼

2021-08-20 23:31:23 字數 947 閱讀 7334

在c/c++中定義了三個標準巨集:

stdout(standardoutput)標準輸出

stdin(standardinput)標準輸入

stderr(standarderror)標準錯誤

這些巨集分別對應不同的裝置控制代碼

stdout對應的是螢幕,一般來說指的是終端視窗上的顯示文字資訊的螢幕!

stdin對應的是輸入緩衝區

stderr和stdout對應的是一樣的,這個巨集是給perror使用的,這裡就順便補充一下printf與perror的區別在於哪兒吧!

printf會將字元先寫入輸入緩衝區,在輸出到stdut上,而perror是直接輸入到stderr上,也就是說略過這個過程,要知道輸出緩衝區當螢幕爆滿時會自動清除,這個是由作業系統來完成的,而輸入緩衝區的是根據棧大小來的,一旦超出棧大小範圍就會被作業系統卡嚓掉!

並且stdin.h標頭檔案裡還定義了error變數,當我們呼叫標準c庫函式時出了錯誤,一般此變數會被設定,具體可以檢視相關文件對一些函式的錯誤碼介紹,就像c++裡的異常流一樣!try~

具體點來說當我們對stdout檔案控制代碼進行操作時其實c語言就知道我們是想把資料輸出到螢幕上,所以就會內部呼叫相關核心函式來輸出,具體是由作業系統來完成的包括printf!

就像linux下malloc內部呼叫的是brk/sbrk函式一樣,而windows內部則呼叫的是heapalloc一樣,畢竟內存在mmu進行虛擬位址對映以後記憶體的管理就交給作業系統了,作業系統通過匯流排與mmu互動來分配記憶體,所以根據不同的系統平台會提供不同的介面~

比如printf是將字元輸出到終端或dos介面上,在windows下是輸出到dos介面上,即內部呼叫的是windows操控dos系統上的api,我們的標準c語言程式均執行的dos系統之上,而linux下則是通過shell直接輸出到終端介面上~,內部呼叫的據博主推測應該是shell上的echo指令碼命令,所以linux下是shell,而在執行shell的就是終端程式!

標準I O庫之流 FILE物件 三個標準流以及緩衝

對於標準i o庫而言,它們所有的操作均是圍繞著流來進行的。標準i o檔案流可用於單位元組或多位元組字符集。流的定向決定了所讀 寫的字元是單位元組還是多位元組。只有兩個函式可改變流的定向,freopen函式清除乙個流的定向 fwide函式可用於設定流的定向。include include int fw...

Linux檔案的三個時間

在windows下,乙個檔案有 建立時間 修改時間 訪問時間。而 在linux下,乙個檔案也有三種時間,分別是 訪問時間 修改時間 狀態改動時間。兩者有此不同,在linux下沒有建立時間的概念,也就是不能知道檔案的建立時間,但如果檔案建立後就沒有修改過,修改時間 建立時間 如果檔案建立後,狀態就沒有...

三個評價線性回歸演算法的標準MSE RMSE MAE

在分類演算法中,我們首先將資料集分成訓練資料集和測試資料集,用訓練資料集去訓練我們的分類模型,用測試資料集的輸入特徵去 將 的結果與測試資料集的真實結果對比,得出模型的準確率。對於線性回歸演算法 上面的衡量標準是與樣本數m有關的 對於均方誤差 mse 來說還有乙個量綱上的問題,改進後會得到均方根誤差...