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

C++ 字元陣列 strlen 輸出異常:缺 \\0 結束符導致讀取越界

     編輯:程式設計綜合問答

代碼:

char onearray[6] = {'a','d','r','y','b'}; // 未給 \\0
strlen(onearray); // 輸出 15 或 5 不定

原因

`strlen` 從首地址逐位元組掃描直到遇到 **`\0` (NUL)**。陣列初始化未給 `\0`,且棧上殘留資料隨機,掃描長度不可預期。

正確做法

  • 字串字面值自帶 `\0`:`char s[] = "adryb";`
  • 手動初始化須補 `\0`:`char s[6] = {'a','d','r','y','b','\0'};`
  • 或 `memset(s, 0, sizeof(s))` 後再賦值。

調試技巧:VS 監視視窗輸入 `s,su` 查看記憶體原始位元組,確認 `\0` 位置。

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