在C語言中,反斜杠\是轉義字符前綴,單獨輸出需使用雙重轉義:
printf("\\"); // 輸出單個反斜杠
C語言字符常量中\引導轉義序列:
| 轉義序列 | 含義 | ASCII碼 |
|---|---|---|
\\ | 反斜杠 \ | 92 |
\n | 換行 | 10 |
\t | 水平制表 | 9 |
\" | 雙引號 | 34 |
\' | 單引號 | 39 |
\0 | 空字符 | 0 |
char path[] = "C:\\Users\\Name\\Documents"; // 源碼中雙反斜杠
// 實際內存存儲: C:\Users\Name\Documents
printf("%s", path); // 輸出: C:\Users\Name\Documents
// 正確
fopen("data\\config.txt", "r");
// 錯誤 (會被解析為 \c 和 \t)
fopen("data\config.txt", "r");
char *json = "{\"path\": \"C:\\\\Windows\\\\System32\"}";
// 內存: {"path": "C:\\Windows\\System32"}
// 輸出: {"path": "C:\Windows\System32"}
if (ch == '\\') { // 單引號中也需轉義
printf("是反斜杠\n");
}
現代C標準支持原始字符串,避免轉義困擾:
// C11 標準
const char *path = R"(C:\Users\Name\Documents)";
// 等價於 "C:\\Users\\Name\\Documents"
// 帶分隔符版本 (處理包含 )" 的字符串)
const char *regex = R"delim(\w+\.txt)delim";
printf("%d", '\\')確認ASCII碼為92printf("%x", '\\')得到5c(unsigned char*)str逐字節檢查掌握轉義規則,是處理文件路徑、網絡協議、文本解析等任務的基礎技能。