標準輸入(Standard Input)、標準輸出(Standard Output)、標準錯誤(Standard Error)
# 參考文件 :
深入淺出 C,O'Reilly
Head First C: A Brain-Friendly Guide
David Griffiths、Dawn Griffiths
# 關鍵字 :
fprintf()、標準輸入(Standard Input)、標準輸出(Standard Output)、標準錯誤(Standard Error)、重新導向(Redirect)
=============================================================
# 如果你想寫一個小工具,你不會想要一筆一筆慢慢key in data,你會想要透過讀取檔案而得到大量的資料
e.g. :
"gpsdata.csv(file)" -> "geo2json(tool)" -> " output.json(file)"
input output
1. 建立 gpsdata.csv,內含gps data
2. 讀取檔案 gpsdata.csv
3. 透過 geo2json (tool) 將資料寫到檔案 output.json
4. 地圖應用程式從檔案 output.json 讀取資料,並將它展示在網頁的地圖上。
# scanf()和printf()並不直接跟鍵盤和顯示器交談,相反地,他們使用標準輸入(Standard Input)、標準輸出(Standard Output)。換句話說,他們不知道資料從何來,往何處去,他們只是讀寫標準輸入和標準輸出。
# 所以我能夠「重導向(Redirect)」標準輸入和標準輸出,好讓他們從別的地方讀寫資料。
# 「重導向(Redirect)」 :
1. 替代從鍵盤輸入資料,你可以使用「<」運算子從檔案讀取資料。
「<」運算子告訴作業系統,程式的標準輸入應該被連接到 gpsdata.csv,而不是鍵盤。
e.g. :
這樣就可以從檔案讀取資料,並寫到scanf()裡面
$gcc ex_fprintf.c -o geo2json
$./geo2json < gpsdata.csv
2. 「>」運算子是將標準輸出重導向到檔案
e.g. :
printf()到顯示器的東西會被寫到檔案裡
$gcc ex_fprintf.c -o geo2json
$./geo2json < gpsdata.csv > output.json
。sample code : https://github.com/walter-cc/headfirst_c/blob/master/ch3_tool/ex_stdin_stdout.c
# 「標準錯誤(Standard Error)」 : 用來傳送錯誤訊息
- 預設 :
標準輸入 標準輸出 & 標準錯誤
鍵盤 -> OS -> 顯示器
- 重導向 :
標準輸入 標準輸出 & 標準錯誤
檔案A -> OS -> 顯示器 , 檔案B
- HOW :
- fprintf() : 輸出到資料串流,可以傳送文字給 stdout(標準輸出) 或 stderr(標準錯誤)
printf("I am Walter"); // 呼叫printf(),實際上會呼叫fprintf()
->
fprintf(stdout, "I am Walter"); // stdout : 標準輸出資料串流
。sample code : https://github.com/walter-cc/headfirst_c/blob/master/ch3_tool/ex_stderr_fprintf.c
留言
張貼留言