完整範例:(參考網頁:http://caterpillar.onlyfun.net/Gossip/CGossip/PrintfScanf.html)
基本上,要顯示的是什麼資料型態,就必須搭配對應資料型態的格式指定字,但%d若用來輸出某個字元,將顯示其整數編碼值,若%c用來顯示某個整數,將顯示該整數對應編碼的字元,一個使用的範例如下所示:
#include <stdio.h>
int main(void) { printf("顯示字元 %c\n", 'A'); printf("顯示字元編碼 %d\n", 'A'); printf("顯示字元編碼 %c\n", 65); printf("顯示十進位整數 %d\n", 15); printf("顯示八進位整數 %o\n", 15); printf("顯示十六進位整數 %X\n", 15); printf("顯示十六進位整數 %x\n", 15); printf("顯示科學記號 %E\n", 0.001234); printf("顯示科學記號 %e\n", 0.001234); return 0; }
顯示結果如下所示:
顯示字元 A 顯示字元編碼 65 顯示字元編碼 A 顯示十進位整數 15 顯示八進位整數 17 顯示十六進位整數 F 顯示十六進位整數 f 顯示科學記號 1.234000E-003 顯示科學記號 1.234000e-003
|
您可以在輸出浮點數時指定精度,例如若為浮點數:
printf("example:%.2f\n", 19.234);
.2指定小數點後取兩位,執行結果會輸出:
example:19.23
您也可以指定輸出時,至少要預留的字元寬度,無論是數值或字串,例如:
printf("example:%6.2f\n", 19.234);
整數6表示預留6個字元寬度,由於預留了6個字元寬度,不足的部份要由空白字元補上,所以執行結果會輸出如下(19.23只佔五個字元,所以補上一個空白在前端):
example: 19.23
若在%之後指定負號,例如%-6.2f,則表示靠左對齊,沒有指定則靠右對齊,例如:
#include <stdio.h>
int main(void) { printf("example:%6.2f\n", 19.234); printf("example:%-6.2f\n", 19.234); return 0; }
顯示結果如下:
example: 19.23 example:19.23 |
若事先無法決定字元寬度,則可以使用*,例如:
#include <stdio.h> #include <stdlib.h>
int main(void) { printf("%*d\n", 1, 1); printf("%*d\n", 2, 1); printf("%*d\n", 3, 1); return 0; }
printf()的*將被之後的第一個引數所取代,所以第一個printf()將預留一個字元寬度,第二個預留兩個字元寬度,第三個預留三個,顯示結果如下:
如果打算取得使用者的輸入,則可以使用「標準輸入」(Standard input)的scanf()函式,並搭配格式指定字與&取址運算子指定給變數,例如:
#include <stdio.h>
int main(void) { int input; printf("請輸入數字:"); scanf("%d", &input); printf("您輸入的數字:%d\n", input); return 0; }
在程式中先宣告了一個整數變數input,使用scanf()函式時,若輸入的數值為整數,則使用格式指定字%d,若輸入的是 其它資料型態,則必須使用對應的格式指定字,如果是double,特別注意要使用%lf來指定,而您必須告知程式儲存資料的變數位址,為此,必須使用&取址運算子,這會將變數的記憶體位址取出,則 輸入的數值就知道變數的記憶體位址並儲存之(但字元陣列名稱本身就有位址資訊,故不用&來取址,之後說明陣列時會再看到)。
執行結果:
scanf()在接受輸入時,可以接受多個值,也可以指定輸入的格式,例如:
#include <stdio.h>
int main(void) { int number1, number2; printf("請輸入兩個數字,中間使用空白區隔):"); scanf("%d %d", &number1, &number2); printf("您輸入的數字:%d %d\n", number1, number2); printf("請再輸入兩個數字,中間使用-號區隔):"); scanf("%d-%d", &number1, &number2); printf("您輸入的數字:%d-%d\n", number1, number2); return 0; }
在第一個scanf()中,指定了使用空白來區隔兩個輸入,而第二個scanf()中,指定了使用-來區隔兩個輸入,一個執行與輸入的結果如下所示:
請輸入兩個數字,中間使用空白區隔):10 20 您輸入的數字:10 20 請再輸入兩個數字,中間使用-號區隔):30-40 您輸入的數字:30-40 |
|