Try   HackMD

C語言教學04 - 格式化輸入輸出

撰寫於2018年9月

現代C語言小心得

格式化字元

格式化字元都是由「%」百分比符號開始。以下列舉常用者,有些現在不曉得是什麼的東西,以後會再闡述。

正負號

符號 用途
+ 強制顯示正負號
空格 假如非負號時顯示空格

顯示精度

符號 用途
# 數字代表顯示的位數,若數字不夠,則以空白補齊
0 修飾顯示的位數,若數字不夠,在左側補零對齊
.# 小數點後的數字代表double的小數後精度

變數長度修飾

變數長度修飾加在型別前

字元 解釋
hh 修飾int型別,代表signed char或unsigned char
h 修飾int型別,代表short int或unsigned short int
l(ell) 修飾所有型別,對於浮點類型無意義,對於int成為long int或unsigned long int
ll 修飾int型別,代表long long int或unsigned long long int
L 修飾double,代表long double
j 修飾int型別,代表intmax_t或uintmax_t型別
t 修飾int型別,代表ptrdiff_t型別
z 修飾int型別,代表size_t型別

型別字元

字元 解釋
d int類別,十進位
i int類別,輸入時判斷進位法
u unsigned int,十進位
o unsigned int,八進位
x, X unsigned int,十六進位
f double
e double 科學記號
c char 型別用Ascii印出
s char陣列(字串)
p void指標
% 就是一個百分比符號

printf 格式化標準輸出

我們試用一下

#include <stdio.h> int main() { int a = 10; printf("Hello %+d\n", a); printf("%10d\n", a); printf("%010d\n", a); unsigned long long int b = 20L; printf("Hi %llu\n", b); printf("Aloha %llx\n", b); double c = 3.14; printf("%f\n", c); printf("%e\n", c); printf("%.1f\n", c); printf("%d, %llu, or %f\n", a, b, c); return 0; }

執行結果

Hello +10
        10
0000000010
Hi 20
Aloha 14
3.140000
3.140000e+00
3.1
10, 20, or 3.140000

scanf 標準格式化輸入

其實差不多,但是有差異

#include <stdio.h> int main() { int a; scanf("%d", &a); // 要加&,address of operator 取址運算子 printf("Hello%x\n", a); }

scanf這裡要加取址運算子&,否則會造成電腦大暴走。原因會在以後闡述。

假如輸入23

23[Enter]
Hello17