前言
本文為《學會 C 語言》一書的學習筆記。
主控台輸入與輸出
C 語言最常使用的標準輸入裝置是鍵盤,標準輸出裝置是電腦螢幕,即所謂的主控台輸入輸出(Console I/O)。
C 語言的標準輸入與輸出是使用文字模式的輸入與輸出,這是循序一行一行組成的文字串流,每一行是由新行字元 \n
結束。
輸入與輸出整數
使用 scanf()
函數讀取整數,使用 printf()
函數將整數輸出。
1 |
|
scanf()
函數的格式字元%d
代表資料型態是整數。scanf()
函數使用第一個參數的格式字元對應第二個參數的變數,變數之前使用&
取址運算子,可以取得變數的記憶體位址。printf()
函數輸出整數,格式字元是%d
。
輸入與輸出浮點數
使用 scanf()
函數讀取浮點數,使用 printf()
函數將浮點數輸出。
1 |
|
scanf()
函數的格式字元如果是%lf
代表資料型態是double
。scanf()
函數的格式字元如果是%f
代表資料型態是float
。scanf()
函數使用第一個參數的格式字元對應第二個參數的變數,變數之前使用&
取址運算子,可以取得變數的記憶體位址。printf()
函數不論輸出double
或float
,格式字元都是%f
。
輸入與輸出字串
使用 scanf()
函數讀取字串(無法讀取空白字元),使用 printf()
函數將字串輸出。
1 |
|
scanf()
函數的格式字元%s
代表資料型態是字串。- C 語言的字串是
char
型態的一維陣列。 - C 語言的陣列名稱本身就是位址,所以不需要在之前使用
&
取址運算子。 printf()
函數輸出整數,格式字元是%s
。
使用 gets()
函數讀取輸入字串(可以讀取空白字元),使用 puts
函數將字串輸出。
1 |
|
gets()
函數可以從標準輸入裝置讀取整行文字內容的字串。
輸入與輸出單一字元
使用 getchar()
函數讀取單一字元(使用緩衝區),使用 putchar()
函數將單一字元輸出。
1 |
|
使用 getch()
函數讀取單一字元(沒有使用緩衝區),使用 putchar()
函數將單一字元輸出。
1 |
|
getch()
函數沒有使用緩衝區,也不會產生回應,讀取到字元會馬上送給 C 程式進行處理。
輸入與輸出多種型態
使用 scanf
函數可以讀取多筆不同型態的資料,例如:
1 | scanf("%f, %d, %f", &x, &y, &z); |
空白字元
scanf()
函數的格式字串可以使用空白字元,如跳脫字元 \t
(水平定位符號)、 \n
(換行符號)等。使用者在輸入資料時,只需間隔一個空白字元即可(最多也只會視為一個)。
1 | "%f%d" // 23.5 45 |
非空白字元
在格式字串如果擁有非空白字元,使用者在輸入資料時,也需要同時包含這些非空白字元。
1 | "%f, %d, %f" // 23.5, 45, 10.2 |
格式字元
在 scanf()
函數的格式字串中一定需要格式字元,一個格式字元對應一種資料型態。
格式字元 | 說明 |
---|---|
%d | 整數 |
%f | 浮點數(float) |
%lf | 浮點數(double) |
%s | 字串 |
%e | 科學符號的數値 |
%u | 無符號整數 |
%o | 八進制整數 |
%x | 十六進制整數 |
在 C 程式使用 scanf()
函數同時輸入多個數値資料。
1 |
|
參考資料
- 陳會安(2016)。學會 C 語言。台北市:旗標。