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

C 語言 %-10d 與 %10d 格式化輸出詳解:對齊、寬度、填充一次搞懂

     編輯:C 語言問答

格式化輸出核心:%[flags][width][.precision][length]specifier

printf 格式字串中,d 代表**有號十進位整數**。10 是**最小欄位寬度**,- 是**標誌**,表示**左對齊**(預設右對齊)。

實例對比

int num = 123;
printf("|%10d|\n", num);   // 輸出:|       123|  (右對齊,左邊補 7 個空格)
printf("|%-10d|\n", num);  // 輸出:|123       |  (左對齊,右邊補 7 個空格)

欄位寬度 10,數字佔 3 字元,剩餘 7 字元用空格填充。

完整旗標與寬度語法

旗標含義適用轉換
-結果左對齊(預設右對齊)所有
+有號數值必須顯示正負號(+123, -123)有號數值
(空格)正數前加空格,負數顯示負號(與 + 互斥)有號數值
0左側補 0 而非空格(若同時給 - 則忽略 0)數值
#替代形式:o 加前綴 0,x/X 加 0x/0X,f/F/e/E/g/G 強制顯示小數點數值

寬度與精度互動

  • %10d:最小寬度 10,數字位數超過 10 時**自動擴展**,不會截斷。
  • %.5d:精度 5,數字位數不足 5 時**左側補 0**(123 → 00123),不影響符號。
  • %10.5d:寬度 10,精度 5,先按精度補 0 再按寬度對齊填充空格。
  • %*d:寬度由引數指定(printf("%*d", 10, 123) 等同 printf("%10d", 123))。

常見陷阱

  1. 忘記 - 位於寬度之前: %10-d 是錯誤語法,編譯器會警告或視為 %10 + -d(無效)。
  2. 以為 0 旗標能配合左對齊: %-010d 中 0 被忽略,仍用空格填充。
  3. 字串對齊用 %10s/%-10s: 同理,%10s 右對齊,%-10s 左對齊。

進階:自訂填充字元(C 不支援,需手工實作)

C 標準庫僅支援空格或 0 填充。若需填充 *、. 等字元,需自行計算長度後用 printf("%*s", width, "") 配合字串操作,或自寫格式化函數。

總結: %10d 右對齊、%-10d 左對齊,寬度不足補空格,寬度不足數字位數時自動擴展。熟練掌握旗標、寬度、精度組合,能輕鬆產出整齊的表格、報表、日誌輸出。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved