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

C語言printf格式化輸出完全指南:從入門到精通

     編輯:關於C語言

printf格式化輸出深度解析

printf是C語言中最常用的輸出函數,其強大的格式化能力往往被初學者忽視。本文系統梳理各類格式符用法,配合實例代碼與輸出結果,助你全面掌握格式化輸出技巧。

整數類型格式化

基本十進制輸出

printf("%d %d", 3, 4);        // 輸出: 3 4
printf("%4d %4d", 3, 4);      // 輸出: "   3    4" (寬度4,右對齊)
printf("%-4d %-4d", 3, 4);    // 輸出: "3    4    " (寬度4,左對齊)

長整型與進制輸出

long a = 3, b = 4;
printf("%ld %ld", a, b);      // 長整型輸出
printf("%8ld %8ld", a, b);    // 寬度8右對齊

int val = -1;
printf("%d %o", val, val);    // 十進制與八進制: -1 37777777777 (32位系統)
printf("%x %o %d", val, val, val); // 十六進制/八進制/十進制: ffffffff 37777777777 -1

unsigned int uval = 65535;
printf("%u %x %o", uval, uval, uval); // 無符號輸出: 65535 ffff 177777

字符與字符串輸出

char c = 'A';
printf("%c %d", c, c);        // 字符與ASCII碼: A 65

char *str = "Hello";
printf("%s", str);            // 字符串輸出: Hello
printf("%10s", str);          // 寬度10右對齊: "     Hello"
printf("%.3s", str);          // 只輸出前3字符: Hel
printf("%-10.3s", str);       // 寬度10左對齊輸出前3字符: "Hel       "

浮點數格式化詳解

基本浮點輸出(%f)

double x = 11111111.111, y = 22222222.222;
printf("%f", x + y);          // 默認6位小數: 33333333.333000
printf("%.2f", x + y);        // 保留2位小數: 33333333.33
printf("%10.2f", x + y);      // 寬度10含小數點: " 33333333.33"
printf("%-10.2f", x + y);     // 左對齊: "33333333.33 "

科學計數法(%e/%E)

double val = 123.456;
printf("%e", val);            // 1.234560e+02
printf("%10.2e", val);        // 寬度10保留2位: " 1.23e+02"
printf("%-10.2e", val);       // 左對齊: "1.23e+02  "

通用格式(%g/%G)

自動選擇%f或%e中較短者,去除尾部零:

double a = 123.456, b = 1234567123.456;
printf("%g", a);              // 123.456
printf("%g", b);              // 1.23457e+09 (自動切換科學計數法)

特殊格式與轉義字符

輸出百分號

printf("進度: %d%%", 50);     // 進度: 50%

常用轉義字符

轉義字符含義
\n換行
\t水平製表符
\\反斜杠
\"雙引號
\r回車

進制輸出完整示例

int num = -1;
printf("十進制: %d\n", num);      // -1
printf("八進制: %o\n", num);      // 37777777777 (補碼形式)
printf("十六進制: %x\n", num);    // ffffffff
printf("無符號: %u\n", num);      // 4294967295 (32位系統)

實戰技巧與注意事項

  • 格式符匹配:參數類型必須與格式符對應,否則導致未定義行為
  • 寬度與精度:%m.nf中m為總寬度(含小數點),n為小數位數
  • 長度修飾符:hh(char)、h(short)、l(long/double)、ll(long long)
  • 標志字符:-左對齊、+強制符號、空格正數前空格、#替代形式(如0x前綴)、0零填充

完整測試程序

#include 

int main() {
    // 整數測試
    printf("=== 整數格式 ===\n");
    printf("%d %4d %-4d %04d\n", 42, 42, 42, 42);
    
    // 浮點數測試
    printf("\n=== 浮點數格式 ===\n");
    double pi = 3.1415926535;
    printf("%f %.2f %10.4f %-10.4f %e %g\n", pi, pi, pi, pi, pi, pi);
    
    // 字符串測試
    printf("\n=== 字符串格式 ===\n");
    char *msg = "Hello";
    printf("%s %10s %.3s %-10.3s\n", msg, msg, msg, msg);
    
    // 進制測試
    printf("\n=== 進制格式 ===\n");
    int val = 255;
    printf("%d %o %x %X %#o %#x\n", val, val, val, val, val, val);
    
    return 0;
}

掌握printf格式化輸出不僅能生成美觀的控制台輸出,更是調試程序、格式化文件輸出的基礎技能。建議收藏本文作為速查手冊,實踐中靈活組合各種格式選項以滿足不同輸出需求。

輸出示例1 輸出示例2 轉義字符示例

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