C 輸入 & 輸出
C 輸入 & 輸出
當我們提到輸入時,這意味著要向程式填充一些資料。輸入可以是以檔案的形式或從命令列中進行。C 語言提供了一系列內建的函式來讀取給定的輸入,並根據需要填充到程式中。
當我們提到輸出時,這意味著要在螢幕上、印表機上或任意檔案中顯示一些資料。C 語言提供了一系列內建的函式來輸出資料到計算機螢幕上和儲存資料到文字檔案或二進位制檔案中。
標準檔案
C 語言把所有的裝置都當作檔案。所以裝置(比如顯示器)被處理的方式與檔案相同。以下三個檔案會在程式執行時自動開啟,以便訪問鍵盤和螢幕。
標準檔案 | 檔案指標 | 裝置 |
---|---|---|
標準輸入 | stdin | 鍵盤 |
標準輸出 | stdout | 螢幕 |
標準錯誤 | stderr | 您的螢幕 |
檔案指標是訪問檔案的方式,本節將講解如何從螢幕讀取值以及如何把結果輸出到螢幕上。
C 語言中的 I/O (輸入/輸出) 通常使用 printf() 和 scanf() 兩個函式。
scanf() 函式用於從標準輸入(鍵盤)讀取並格式化, printf() 函式傳送格式化輸出到標準輸出(螢幕)。
例項
編譯以上程式,輸出結果為:
入門教學
例項解析:
- 所有的 C 語言程式都需要包含 main() 函式。 程式碼從 main() 函式開始執行。
- printf() 用於格式化輸出到螢幕。printf() 函式在 "stdio.h" 標頭檔案中宣告。
- stdio.h 是一個頭檔案 (標準輸入輸出標頭檔案) and #include 是一個預處理命令,用來引入標頭檔案。 當編譯器遇到 printf() 函式時,如果沒有找到 stdio.h 標頭檔案,會發生編譯錯誤。
- return 0; 語句用於表示退出程式。
%d 格式化輸出整數
編譯以上程式,輸出結果為:
Number = 5
在 printf() 函式的引號中使用 "%d" (整型) 來匹配整型變數 testInteger 並輸出到螢幕。
%f 格式化輸出浮點型資料
getchar() & putchar() 函式
int getchar(void) 函式從螢幕讀取下一個可用的字元,並把它返回為一個整數。這個函式在同一個時間內只會讀取一個單一的字元。您可以在迴圈內使用這個方法,以便從螢幕上讀取多個字元。
int putchar(int c) 函式把字元輸出到螢幕上,並返回相同的字元。這個函式在同一個時間內只會輸出一個單一的字元。您可以在迴圈內使用這個方法,以便在螢幕上輸出多個字元。
請看下面的例項:
例項
當上面的程式碼被編譯和執行時,它會等待您輸入一些文字,當您輸入一個文字並按下回車鍵時,程式會繼續並只會讀取一個單一的字元,顯示如下:
$./a.out Enter a value :itread01 You entered: r
gets() & puts() 函式
char *gets(char *s) 函式從 stdin 讀取一行到 s 所指向的緩衝區,直到一個終止符或 EOF。
int puts(const char *s) 函式把字串 s 和一個尾隨的換行符寫入到 stdout。
例項
當上面的程式碼被編譯和執行時,它會等待您輸入一些文字,當您輸入一個文字並按下回車鍵時,程式會繼續並讀取一整行直到該行結束,顯示如下:
$./a.out Enter a value :itread01 You entered: itread01
scanf() 和 printf() 函式
int scanf(const char *format, ...) 函式從標準輸入流 stdin 讀取輸入,並根據提供的 format 來瀏覽輸入。
int printf(const char *format, ...) 函式把輸出寫入到標準輸出流 stdout ,並根據提供的格式產生輸出。
format 可以是一個簡單的常量字串,但是您可以分別指定 %s、%d、%c、%f 等來輸出或讀取字串、整數、字元或浮點數。還有許多其他可用的格式選項,可以根據需要使用。如需瞭解完整的細節,可以檢視這些函式的參考手冊。現在讓我們通過下面這個簡單的例項來加深理解:
例項
當上面的程式碼被編譯和執行時,它會等待您輸入一些文字,當您輸入一個文字並按下回車鍵時,程式會繼續並讀取輸入,顯示如下:
$./a.out Enter a value :itread01 123 You entered: itread01 123
在這裡,應當指出的是,scanf() 期待輸入的格式與您給出的 %s 和 %d 相同,這意味著您必須提供有效的輸入,比如 "string integer",如果您提供的是 "string string" 或 "integer integer",它會被認為是錯誤的輸入。另外,在讀取字串時,只要遇到一個空格,scanf() 就會停止讀取,所以 "this is test" 對 scanf() 來說是三個字串。