在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 來說還有乙個量綱上的問題,改進後會得到均方根誤差...