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

C語言轉義字符 \t (水平製表符) 行為詳解

     編輯:C 語言問答

\t (Horizontal Tab) 不是固定 8 格,是「跳到下一個製表位」

核心規則

  • 製表位:通常每 8 列為一個製表位 (第 1, 9, 17, 25... 列,0-based 為 0, 8, 16...)。
  • 動作:輸出 \t 時,光標移動到下一個製表位。
  • 當前位置相關:從當前列跳轉,而非從行首固定跳 8 格。

示例演示

printf("a\tb\n");      // a 在第0列,\t 跳到第8列 → "a       b"
printf("ab\tc\n");     // ab 佔0-1列,\t 跳到第8列 → "ab      c"
printf("abcdefgh\tij\n"); // 佔0-7列,\t 跳到第16列 → "abcdefgh        ij"
printf("123456789\tX\n");  // 佔0-8列,\t 跳到第16列 → "123456789       X"

常見誤區

  1. 以為固定 8 空格:只在行首或剛好對齊製表位時表現為 8 空格。
  2. 跨平台對齊不一致:終端/編輯器製表寬度可配置 (4/8/其他),不要用 \t 做精確列對齊。
  3. 中文字符寬度:中文佔 2 列,\t 計算基於列號而非字符數,混合中英文更難對齊。
  4. 最佳實踐:精確對齊用定寬格式

    // 對齊輸出:姓名左對齊15列,年齡右對齊3列
    printf("%-15s %3d\n", "Zhang San", 25);
    printf("%-15s %3d\n", "Li", 30);
    // 輸出:
    // Zhang San          25
    // Li                 30
    

    其他常用轉義字符

    轉義符含義ASCII碼
    \n換行10 (0x0A)
    \r回車13 (0x0D)
    \t水平製表9 (0x09)
    \v垂直製表11 (0x0B)
    \b退格8 (0x08)
    \f換頁12 (0x0C)
    \\反斜槓92 (0x5C)
    \'單引號39 (0x27)
    \"雙引號34 (0x22)
    \0空字符0 (0x00)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved