C語言轉義字符完整表與使用指南
轉義字符以反斜杠 \ 開頭,表示難以直接輸入或有特殊含義的字符。掌握它們是處理字符串、格式化輸出、文件路徑的基本功。
標準轉義字符表
| 轉義序列 | 字符名稱 | ASCII 碼 (十進制/十六進制) | 常見用途 |
\n | 換行 / 新行 | 10 / 0x0A | 文本行分隔,printf 換行 |
\t | 水平製表符 | 9 / 0x09 | 列對齊,縮進 |
\v | 垂直製表符 | 11 / 0x0B | 較少用 |
\b | 退格 | 8 / 0x08 | 光標左移,覆蓋前一字符 |
\r | 回車 | 13 / 0x0D | 光標移行首,Windows 換行 \r\n |
\f | 換頁 | 12 / 0x0C | 打印機分頁 |
\a | 響鈴 | 7 / 0x07 | 終端發聲 |
\\ | 反斜杠本身 | 92 / 0x5C | 路徑 C:\\Windows、正則轉義 |
\' | 單引號 | 39 / 0x27 | 字符常量 '\'' |
\" | 雙引號 | 34 / 0x22 | 字符串內嵌引號 "He said \"Hi\"" |
\? | 問號 | 63 / 0x3F | 防止三字母組 ??= 被誤識別 |
\0 | 空字符 | 0 / 0x00 | 字符串結束標記,內存清零 |
數值轉義序列
| 形式 | 說明 | 示例 |
\ooo | 1-3 位八進制數值 | \101 = 'A' (65) |
\xhh | 1-2 位十六進制數值 | \x41 = 'A' |
\uhhhh | Unicode 碼點 (C99/C++11) | \u4e2d = '中' |
\Uhhhhhhhh | Unicode 碼點 32 位 | \U0001F600 = 😀 |
字符串字面量中的特殊規則
- 相鄰字符串自動拼接:
"Hello" "World" → "HelloWorld";
- 原始字符串 (C++11):
R"(C:\Path\To\File)" 無需轉義反斜杠;
- 多行字符串:C 標準不支援,需用
\n 或反斜杠換行(非標準擴展)。
常見場景與避坑
| 場景 | 錯誤寫法 | 正確寫法 |
| Windows 路徑 | "C:\Users\Name" (\U 被誤識別) | "C:\\Users\\Name" 或 "C:/Users/Name" |
| 正則表達式 | "\d+" (\d 非標準轉義) | "\\d+" 或原始字符串 |
| 字符常量換行 | '\n' 正確,'\n\r' 錯誤(多字符) | 單字符常量只能含一個字符/轉義序列 |
調試技巧
// 打印字符串真實內容(含不可見字符)
void print_raw(const char *s) {
for (; *s; s++) printf("%02X ", (unsigned char)*s);
puts("");
}
// "A\nB\0C" → 41 0A 42 00 43
熟練使用轉義字符,能讓字符串處理代碼更簡潔、可移植,也是解析協議、處理文本的基礎技能。