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

C語言格式化輸出完整速查表:printf/scanf 格式字串、標誌、寬度、精度、長度修飾符

     編輯:關於C語言

C語言格式化輸出完整速查表:printf/scanf 格式字串、標誌、寬度、精度、長度修飾符

printf/scanf 格式字串是 C 語言 I/O 的核心,參數繁多易混淆。本文系統整理所有轉換指示符、標誌、寬度、精度、長度修飾符,並附帶實例對照表,適合列印貼在螢幕邊隨時查閱。

轉換指示符完整表

指示符意義對應類型範例輸出
%d, %i有號十進位整數int42, -7
%u無號十進位整數unsigned int42
%o八進位unsigned int52
%x, %X十六進位 (小寫/大寫)unsigned int2a, 2A
%f定點浮點數double3.141593
%e, %E科學記號double3.141593e+00
%g, %G自動選 %f/%e 較短者double3.14159
%a, %A十六進位浮點數 (C99)double0x1.921fbp+1
%c單一字元int (提升自 char)A
%s字串 (以 \0 結尾)char*Hello
%p指標位址void*0x7ffee8c0
%%字面 % 字元—%
%n已輸出字元數寫入指標int*—

格式字串完整語法

%[標誌][寬度][.精度][長度]指示符

標誌

標誌效果
-左對齊 (預設右對齊)
+正數也顯示 + 號
空格正數前加空格,負數顯示 -
#替代形式:%o 加 0,%x 加 0x,%f/%e 強制顯示小數點
0寬度不足時左側補 0 (數值類型)

寬度與精度

  • %10d:最寬 10 字元,不足左補空格
  • %.5f:小數點後 5 位
  • %10.3f:寬 10,小數 3 位
  • %-10s:左對齊,寬 10
  • %.*f:精度由參數指定 printf("%.*f", 3, 3.14159) → 3.142

長度修飾符

修飾符適用指示符意義
hhd,i,o,u,x,X,nsigned char, unsigned char
hd,i,o,u,x,X,nshort, unsigned short
l (ell)d,i,o,u,x,X,nlong, unsigned long
lld,i,o,u,x,X,nlong long, unsigned long long
lf,e,E,g,G,a,Adouble (預設即 double,%lf 同 %f)
Lf,e,E,g,G,a,Along double
jd,i,o,u,x,X,nintmax_t, uintmax_t
zd,i,o,u,x,X,nsize_t, ssize_t
td,i,o,u,x,X,nptrdiff_t

scanf 專用細節

  • %[] 掃描集合:%[abc] 只讀 a/b/c,%[^abc] 讀非 a/b/c
  • %*d 抑制賦值:讀取但不存入變數
  • %n 同 printf,寫入已讀字元數
  • 掃描集、抑制賦值不計入返回值

經典實例對照

printf("%04d", 7);      // 0007
printf("%+d", 7);       // +7
printf("% d", 7);       //  7 (前面有空格)
printf("%#x", 255);     // 0xff
printf("%.2f", 3.14159); // 3.14
printf("%10.2f", 3.14);  // "    3.14" (前6空格)
printf("%-10.2f", 3.14); // "3.14    " (後6空格)
printf("%s", "Hello");   // Hello
printf("%.3s", "Hello"); // Hel
printf("%10.3s", "Hello"); // "       Hel"
scanf("%19s", buf);      // 最多讀19字元防溢位
scanf("%[^\n]", line);   // 讀整行含空格

掌握格式字串細節,能精確控制輸出格式、防止緩衝區溢位、解析複雜輸入,是 C 語言工程師的基本功。

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