標準輸入(Standard Input)、標準輸出(Standard Output)、標準錯誤(Standard Error)

# 參考文件 :

深入淺出 CO'Reilly

Head First C: A Brain-Friendly Guide

David GriffithsDawn 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


留言

這個網誌中的熱門文章

讀書心得,6,綠角的基金8堂課(2016補課增修版),綠角

讀書心得,2,跑過、煩惱過,才能發現的事。,大迫傑

讀書心得,9,生時間:高績效時間管理術,傑克‧納普, 約翰‧澤拉斯基