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

C 語言 printf 同時輸出字元與整數的格式化技巧

     編輯:C 語言問答

核心語法

printf 透過格式字串中的多個轉換規範,配合可變參數列表,一次呼叫即可輸出多種類型數據。

基本範例

#include <stdio.h>

int main() {
    int num = 65;
    char ch = 'A';

    // 1. 同時輸出:整數 + 空格 + 字元 + 換行
    printf("整數: %d, 字元: %c, ASCII碼: %d\n", num, ch, ch);
    // 輸出: 整數: 65, 字元: A, ASCII碼: 65

    // 2. 格式化對齊表格
    printf("%-10s | %5s | %5s\n", "字元", "十進制", "十六進制");
    for (int i = 65; i <= 70; i++) {
        printf("%-10c | %5d | 0x%02X\n", i, i, i);
    }
    return 0;
}

常用字元相關轉換規範

格式說明範例輸出
%c單一字元 (對應 int,取低 8 位)A
%d / %i有號十進制整數65
%u無號十進制整數65
%x / %X十六進制 (小寫/大寫)41 / 41
%o八進制101

進階技巧

1. 字元與整數互轉


char c = 'Z';
int ascii = c; // 隱式轉換: char -> int (ASCII 值)
printf("'%c' = %d (0x%X)\n", c, ascii, ascii);
// 輸出: 'Z' = 90 (0x5A)

2. 列印字串 (字元陣列)


char str[] = "Hello";
printf("字串: %s\n", str); // %s 期望 char* (首元素位址)
printf("首字元: %c\n", *str); // 解參考首元素
printf("首字元地址: %p\n", (void*)str);

3. 寬字元 (Unicode) 支援


#include <wchar.h>
#include <locale.h>

setlocale(LC_ALL, ""); // 設定區域支援 UTF-8
wchar_t wc = L'中';
printf("寬字元: %lc, 碼點: U+%04X\n", wc, wc);
// 需終端機支援 Unicode 顯示

常見錯誤

  1. 格式與參數不匹配:printf("%c", 300) → 只取低 8 位 (300 % 256 = 44),輸出 ','。嚴重時導致未定義行為 (如 %s 傳整數)。
  2. 缺少標頭檔:未 #include <stdio.h>,編譯器假設 printf 回傳 int,參數提升規則可能出錯。
  3. 緩衝區未刷新:無 \n 時,標準輸出為行緩衝,需 fflush(stdout) 或 setbuf(stdout, NULL)。

總結

使用 printf("格式字串", 變數1, 變數2, ...),按順序對應 %d (整數)、%c (字元)、%s (字串) 等格式符,即可靈活輸出混合類型數據。善用寬度、精度、標誌實現漂亮對齊。

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