sprintf vs printf vs vsprintf
| 函數 | 回傳 | 直接輸出 | 參數形式 |
| sprintf | 格式化字串 | 否 | 可變參數 |
| printf | 輸出長度 | 是 | 可變參數 |
| vsprintf | 格式化字串 | 否 | 陣列 |
| vprintf | 輸出長度 | 是 | 陣列 |
格式字串完整語法
類型轉換規範對照表
| 規範 | 說明 | 輸入型別 | 範例 |
| %% | 字面 % | - | % |
| %b | 二進位 | 整數 | 1010 |
| %c | ASCII 字元 | 整數 | 65 → 'A' |
| %d | 有號十進位 | 整數/浮點(取整) | 42, -5 |
| %e/%E | 科學記號 | 浮點數 | 1.23e+3 |
| %u | 無號十進位 | 整數 | 4294967295 |
| %f/%F | 浮點數 | 浮點數 | 3.141593 |
| %g/%G | 自動選擇 %e/%f | 浮點數 | 1.23e+3 |
| %o | 八進位 | 整數 | 52 |
| %s | 字串 | 字串 | hello |
| %x/%X | 十六進位 | 整數 | 2a / 2A |
修飾符詳細說明
- 參數編號
n$:指定使用第 n 個參數,支援重複、亂序。sprintf('%2$s %1$s', 'A', 'B') → 'B A'。
- 填補字元:
0(零填補)、'x(自訂字元,需單引號)。%05d → 00042。
- 對齊
-:左對齊(預設右對齊)。%-10s。
- 寬度:最小字元寬度。
%10s。
- 精度
.n:浮點數小數位、字串最大長度。%.2f、%.5s。
實戰範例集
1. 參數重複與交換
2. 固定寬度報表
3. 科學記號與精度控制
4. 進制轉換
5. 字串截斷與填補
6. 實務:SQL 預處理模板(示意,實務用 PDO)
結語
sprintf() 格式字串功能強大,支援參數編號、填補、對齊、寬度、精度、多種進制轉換。掌握完整語法能簡化報表產生、模板渲染、協定封包等字串組裝工作。現代專案資料庫操作請改用 PDO 預處理語句,避免 SQL 注入風險。