c語言的strlen函式計算字元陣列長度不對
今天在使用strlen的時候碰到一個很奇怪的問題。
定義了一個字元陣列,列印它長度:
char ch[4] = { 'h','o','m','e' };
printf("%d",strlen(ch));
輸出結果一會是15,一會是19。
除錯了下發現記憶體中‘ e ’後頭是‘ ?’,所以strlen把‘ ? ’也算到了ch的長度中。可是我記得c語言定義陣列會在結尾加上\0的呀。
然後我發現了把陣列的長度改成5,strlen的列印結果就是對的了。
char ch[5] = { 'h','o','m','e' };
printf("%d",strlen(ch));
究其原因就是,你初始化靜態陣列的大小應該是已有字元數加一,你需要給\0留上一個空間。如果沒有這個空間程式是不會給你自動補上’\0’的
strlen原始碼:
int Strlen(const char * const s)
{
int i;
for (i = 0; s[i]; i++);
return i;
}
相關文章
- C語言求其字元陣列的長度C語言字元陣列
- C語言如何計算陣列的長度C語言陣列
- c語言獲取陣列長度的函式C語言陣列函式
- C語言獲得陣列長度的函式C語言陣列函式
- C語言中strlen求字串長度,求字元陣列長度(空字元,數字0,字元0,陣列部分初始化)C語言字串字元陣列
- C語言中,當計算字元陣列長度時,用sizeof 和strlen 的原理及兩者的區別C語言字元陣列
- c語言陣列、sizeof()及strlen()C語言陣列
- c語言中計算陣列長度的方法C語言陣列
- sizeof 和 strlen 計算陣列大小和長度詳解陣列
- C語言(字元陣列)C語言字元陣列
- c語言字元陣列C語言字元陣列
- 字元陣列的長度字元陣列
- C語言-字串函式的實現(一)之strlenC語言字串函式
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- C語言應用於LR中-如何得到陣列長度C語言陣列
- ORACLE字元列長度語義Oracle字元
- 求陣列長度的兩種方法,以及區別(strlen sizeof)陣列
- c語言的陣列C語言陣列
- C語言函式題-查詢陣列每行的最大值C語言函式陣列
- C++陣列長度C++陣列
- C語言陣列C語言陣列
- C語言中如何求一個陣列的長度C語言陣列
- C語言:計算輸入字元的個數C語言字元
- C語言計算輸入字元的個數C語言字元
- c語言關於陣列的簡單運算C語言陣列
- C++中strlen函式C++函式
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- C語言:使用函式計算兩點間的距離C語言函式
- 力扣1438. 絕對差不超過限制的最長連續子陣列-C語言實現-中等難度力扣陣列C語言
- C語言的函式C語言函式
- 字元陣列的幾個應用函式字元陣列函式
- C++獲取陣列的長度C++陣列
- C語言結構體及函式傳遞陣列引數示例C語言結構體函式陣列
- 磁碟陣列可靠度的計算陣列
- [ASM C/C++] C語言陣列ASMC++C語言陣列
- 陣列操作,計算組元素的極值函式陣列函式
- 你不見得會計算C字串長度字串
- C語言ungetc()函式:把字元退回到輸入流C語言函式字元