c 中strlen計算陣列長度怎麼會出錯 很奇怪請看例子 如輸入123,結果顯示字串長度為23(不確

2022-11-15 00:56:28 字數 586 閱讀 4460

1樓:黑海豹子

這個問題出現的主要原因是你對strlen這個函式不理解,這個函式的工作原理是從key的key[0]開始到遇到第乙個'\0'字元位置為止,算作這個字元陣列的長度,而你不加'\0'則它會找到k[12]以後的'\0',你可以做這樣乙個實驗,在key的其他位置設定'\0',比如key[6]位置,那麼strlen(key)之後的值會是7而不是13,可以嘗試呀,知道原理就很好理解了,實現你上面的功能可以這樣來實現就不會出錯 cout<

2樓:

如果你正常定義乙個完整的char key[20],初始化的時候char key[20]=「abcdf」;在這個初始化的'f"後面隱含了乙個'\n'字串的結束符,乙個完整的字串必備的。

3樓:匿名使用者

strlen是專門計算字串的。

加入key[i] = '\0';其實就是字串結束符,當然不會出錯。

4樓:

因為key大小為20

最後賦值時大小為13

走後需加乙個\0 陣列結束字尾

c語言中陣列長度問題

首先你要明白 乙個整形資料或者字元型資料佔多少個位元組 跟你的系統和編譯器都有關 vc 6.0 乙個int形占用四個位元組 乙個char形占用1個位元組然後你的兩個陣列都包含7個元素 然而第二個陣列的賦值很詭異 字元陣列接收一些非字元資料 還真沒試過怎麼樣 字元陣列看見乙個 0就結束了 你的兩個陣列...

C如果功能函式引數是陣列,陣列長度怎麼處理好

你可以傳引數,也可以用特殊的陣列元素標誌。比如你的陣列是char txt 10 最後以0結束,就可以在函式裡用這個結束標誌判斷,沒有的話就傳個長度進去。sizeof arr sizeof int 可以確定陣列長度 把陣列長度也傳進去,因為陣列名在傳給函式時會弱化為指標!提示你,就是說你如果在函式內用...

c語言中,關於字串長度與字元陣列長度的問題

c語言約定字串以 0 結尾,上述陣列末尾沒有 0 所以字串的長度無法確定。陣列長度指的是陣列的元素個數,字串長度是以 0 為標誌來確定的,舉個例子 char a 20 abc 陣列長度是20,而字串長度是3,隱含的 0 不算在字串長度中。char a 按陣列來說已經初始化了3個char型別,分配了3...