轉義字元讓字串能表達不可列印控制字元與特殊符號。本文提供完整對照表、實際輸出範例、常見陷阱與最佳實踐。
| 轉義序列 | 名稱 | ASCII 碼 | 作用 |
|---|---|---|---|
\n | 換行 (LF) | 10 | 移至下一行開頭 |
\r | 歸位 (CR) | 13 | 移至本行開頭 (不換行) |
\t | 水平定位 (HT) | 9 | 跳至下一個定位點 (通常8的倍數) |
\v | 垂直定位 (VT) | 11 | 垂直跳格 (較少用) |
\b | 退格 (BS) | 8 | 游標左移一格 (不刪除字元) |
\f | 換頁 (FF) | 12 | 換頁 (印表機/終端) |
\a | 響鈴 (BEL) | 7 | 發出蜂鳴聲 |
\\ | 反斜線 | 92 | 代表字面 \ 字元 |
\' | 單引號 | 39 | 字元常數中表示 ' |
\" | 雙引號 | 34 | 字串常數中表示 " |
\? | 問號 | 63 | 避免三字母組誤解 |
\ooo | 八進位 | — | 1-3位八進位數字 (如 \101 = 'A') |
\xhh | 十六進位 | — | 1-2位十六進位數字 (如 \x41 = 'A') |
\0 | 空字元 | 0 | 字串結束標記 |
#include <stdio.h>
int main() {
printf("\101 \x42 C\n"); // A B C (八進位\101=65='A', 十六進位\x42=66='B')
printf("I say:\"How are you?\"\n"); // I say:"How are you?"
printf("\\C Program\\\n"); // \C Program\
printf("Turbo \'C\'"); // Turbo 'C'
return 0;
}
printf("Path: C:\new\folder"); → \n 被解析為換行,\f 為換頁!正確寫法:"C:\\new\\folder" 或 "C:/new/folder"'\0' (字元常數,值0) vs "\0" (字串,長度1含\0) vs '0' (字元 '0', 值48)R"(C:\new\folder)" 無需轉義反斜線// \uXXXX (16位) 或 \UXXXXXXXX (32位) 表示 Unicode 碼位
printf("\u4e2d\u6587\n"); // 輸出:中文 (需終端支援 UTF-8)
printf("\U0001f600\n"); // 😀 (Emoji)
熟練掌握轉義字元,能精確控制輸出格式、處理檔案路徑、支援國際化字元,是 C 語言字串處理的基本功。