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

C 語言字串長度與 \0 結束符:轉義序列 \0mn 長度為 0 而非 2 的原因

     編輯:程式設計綜合問答

核心規則

C 語言字串以 **首個 \0 (NUL, ASCII 0)** 為結束標記。strlen、printf("%s")、strcpy 等所有標準庫函數**遇到 \0 即停止**,後續位元組不屬於字串內容。

範例解析


char s[] = "\0mn"; // 實際記憶體: 00 6D 6E 00
printf("%d", strlen(s)); // 0
printf("%d", sizeof(s)); // 4 (含編譯器補的結束符)
  • \0 是八進制轉義,代表單一位元組 0x00。
  • mn 是普通字符,但在 \0 之後,不被視為字串一部分。

常見混淆點

最佳實踐

  • 字串處理**永遠假設以 \0 結尾**,手動構建字串時確保寫入 \0。
  • 二進制資料 (含 0x00) **不可用字串函數**,需用 memcpy, memmove 配合長度參數。
  • 嵌入式開發常用 uint8_t* + size_t len 替代 char* 避免誤解。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
字面量含義字串長度
"\0"單一 NUL 字符0
"0"字符 '0' (ASCII 48)1
"\0mn"NUL + 'm' + 'n'0
"\\0mn"反斜線 + '0' + 'm' + 'n'4