首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

printf 格式化輸出完全手冊:格式字串、標誌、寬度、精度與長度修飾符

     編輯:關於C語言

格式字串通用語法

%[標誌][最小寬度][.精度][長度]類型

方括號內為可選項。以下逐項詳解。

1. 類型轉換符

符號輸出類型說明
d, i有號十進制整數正數不輸出 + 號
u無號十進制整數
o八進制無號整數不輸出前綴 0
x, X十六進制無號整數小寫/大寫字母,不輸出 0x
f十進制浮點數固定小數點記數法
e, E指數記數法小寫/大寫 e
g, G自動選擇 f 或 e較短者優先,指數<-4 或 ≥精度用 e
a, A十六進制浮點數C99,p 記數法
c單一字元
s字串輸出至 \0
p指標位址實現定義格式,通常 0x...
n不輸出,寫入已輸出字元數對應 int* 參數
%字面 % 字元%%

2. 標誌

標誌效果
-左對齊(預設右對齊),右側填空格
+有號數值必輸出正負號
空格正數前加空格,負數加 - 號
#替代形式:o加 0,x/X加 0x/0X,浮點數強制顯示小數點,g/G保留尾隨 0
0數值欄位寬度不足時左側填 0(遇 - 或指定精度時忽略)

3. 最小寬度

十進制整數,指定輸出最少字元數。實際長度超過則按實際輸出。printf("%10d", 42) → 前面 8 空格再輸出 42。

4. 精度

.數字 形式。

  • 整數(d,i,o,u,x,X):最少數位數,不足前補 0
  • 浮點數(f,F,e,E):小數點後位數
  • g,G:最大有效數字數
  • s:最大輸出字元數(截斷)

5. 長度修飾符

修飾符對應類型
hhsigned char, unsigned char
hshort, unsigned short
l (ll)long (long long), double (for f), wchar_t* (for s)
Llong double
jintmax_t, uintmax_t
zsize_t
tptrdiff_t

6. 進階技巧

動態寬度/精度

printf("%*.*s\n", width, precision, str);  // 寬度與精度由參數傳入

%n 獲取已輸出長度

int len;
printf("Hello%n World", &len);  // len = 5

常見陷阱

  • 類型不匹配:%d 對應 long → UB。用 %ld。
  • %s 無長度限制:易緩衝區溢位。用 %.100s 或 snprintf。
  • 浮點數預設提升:float 變參傳遞自動提升為 double,%f/%e/%g 統一對應 double。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved