螢幕輸出VS檔案輸出

2022-02-18 07:40:29 字數 1150 閱讀 8583



問題1我們在編寫程式時經常需要數一些資料到螢幕,來檢視我們的結果是否正確,雖然直接輸出到螢幕,檢視起來呢很方便,但當資料量很大時,需要耗費大量的時間。於是我們想到能不能通過輸出到檔案來減少時間能。相同的資料是輸出到螢幕更快還是輸出到檔案更快?

這個地方變數

有很多:磁碟速度、目的檔案有沒有其他io

請求、文字渲染的方式、

api具體的操作流程、作業系統本身

的設計等等都會影響輸出到檔案的速度。但一般來說還是會比直接輸出到螢幕快(而且通常快幾個數量級)。

比如我們可以用如下**進行測試,如果測試輸出到檔案的時間就在開頭加入#define tofile

,如果測試輸出到螢幕的時間,就注釋掉。

//#define tofile

#include #include int main()

long unsigned int i;

for(i=0;i<1000000;i++)

fclose(output_fils);

end_test = clock();

printf("the total time is: %lf",((double)(end_test-start_test)/clocks_per_sec));

return 0;

}

通過編譯執行,我們會發現,如果輸出到檔案僅需要0.015s

,但是直接輸出到螢幕卻需要

12.906s

,兩者差距很大。

問題2:既然輸出到檔案要比輸出到螢幕快的多,那我們怎樣程式設計使結果全部輸出到檔案呢?

當然,你可以在每個需要輸出的地方用fprintf

來設定輸出到檔案。但是考慮到那樣太麻煩了,而且我們已經系管理直接使用

printf

,所以我們可以用乙個函式

freopen

來把標準輸出流匯出到我們設定的檔案流中,這樣我們以後用printf

輸出到東西全部到達我們設定的檔案中。

但是有個問題是,那我們如何在某些特定的時候在螢幕上輸出提示資訊呢?考慮到標準錯誤流也是輸出到螢幕,所以我們可以假借這個標準錯誤流。示例**如下:

#include int main()

vs實現輸出

cout輸出 ifdef debug allocconsole freopen conout w t stdout freopen conin r t stdin endif 彈視窗 在引擎類中新增此條語句可以幫助實現輸出顯示。char buffer 32 sprintf buffer,wchair...

VS開發 FORCE(強制檔案輸出)

force multiple unresolved 備註即使引用了符號但未定義或多次定義符號,force 選項也通知鏈結器建立有效的 exe 檔案或 dll。force 選項可以帶乙個可選引數 不帶引數的 force 表示多次定義和未解析。用該選項建立的檔案可能不會按預期執行。當指定 force 選...

Linux的螢幕資訊輸出至檔案

裝置名稱 標準叫法 代號 標準輸入裝置 stdin standard input 0 標準輸出裝置 stdout standard output 1 標準錯誤裝置 stderr standard error 2 echo abc 1 out.txt 或 echo abc out.txt 常規內容輸出...