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

C語言轉義字符完整表與實戰應用:控制字符、八/十六進制表示與路徑處理

     編輯:關於C語言

標準轉義字符表

轉義序列含義ASCII 碼常見用途
\n換行 (LF)10 (0x0A)文本行分隔
\r回車 (CR)13 (0x0D)Windows 換行 \r\n、進度條覆蓋
\b退格 (BS)8 (0x08)刪除前一字符、動畫效果
\f換頁 (FF)12 (0x0C)打印機分頁
\t水平製表 (HT)9 (0x09)對齊輸出、分隔字段
\v垂直製表 (VT)11 (0x0B)極少用
\a響鈴 (BEL)7 (0x07)終端蜂鳴
\"雙引號34 (0x22)字符串內包含引號
\'單引號39 (0x27)字符常量內包含單引號
\\反斜槓92 (0x5C)路徑、正則表達式
\?問號63 (0x3F)避免三字母組歧義

數值轉義:八進制與十六進制

  • 八進制:\ 後跟 1~3 位八進制數字,如 \101 (= 'A')、\07 (= \a)。
  • 十六進制:\x 後跟 1 位或多位十六進制數字,如 \x41 (= 'A')、\x1B (= ESC)。無位數上限,遇非十六進制字符停止。

printf("\x41");   // 輸出 A
printf("\102");   // 輸出 B (八進制 102 = 十進制 66)
printf("\x1B[2J"); // ANSI 清屏序列 (ESC [ 2 J)

實戰範例

例 1:輸出帶引號字符串


printf("\"C++Builder\" 2009\n");  // 輸出: "C++Builder" 2009

例 2:文件路徑雙反斜槓


char *path = "C:\\Windows\\Temp";
printf("%s", path);  // 輸出: C:\Windows\Temp

單反斜槓是轉義引導符,寫路徑必須雙寫 \\ 表示字面反斜槓。

例 3:進度條/動畫利用 \r 和 \b


for (int i = 0; i <= 100; i++) {
    printf("\rProgress: %d%%", i);
    fflush(stdout);
    usleep(50000);
}
printf("\n");

\r 回行首覆蓋上一次輸出,實現單行刷新效果。

字符串字面量連接規則


"Hello" "World"  // 編譯期自動連接為 "HelloWorld"
"Line1\n" "Line2\n"  // 多行字符串分行書寫

寬字符/UTF-8 轉義 (C11)

  • L'\x41'、L"中文":wchar_t 寬字符/字符串。
  • u8"中文":UTF-8 字符串字面量(類型 char[])。
  • u'\u4E2D'、U'\U00004E2D':Unicode 碼點直接表示(C11)。

避坑指南

  1. 八進制位數陷阱:\123 是一個字符(八進制 123),非 \12 + '3'。若後接數字字符需用十六進制 \x53 或拆分字符串 \"\\12\" \"3\"。
  2. 十六進制貪婪匹配:\x123 視為一個字符(0x123),若想表達 0x12 + '3',需寫 \x12"3"。
  3. 字符常量 vs 字符串:'\n' 類型 int,"\n" 類型 char[2]。sizeof('\n') == sizeof(int) (通常 4),sizeof("\n") == 2。
  4. 原始字符串 (C++11/C23):R"(C:\Windows\Temp)" 無需轉義,C23 引入 R"(...)" 語法。

總結

轉義字符是 C 語言在字符/字符串中表示不可打印控制字符、特殊標點、任意數值字符的核心機制。熟練掌握 \n/\r/\t/\\/\" 等常用轉義、八/十六進制數值表示、路徑雙反斜槓規範,並注意八/十六進制位數貪婪匹配陷阱,是編寫正確字符串處理代碼的基礎。

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