[英]Inaccurate length of string when using 'strlen'
使用strlen
function 打印字符串長度時,字符串長度不准確。
我得到字符串a
的 output 為 5(這是正確的),但是當我打印字符串b
的長度時, output 出來是 10 (應該是 5) 。
這是代碼片段:
char a[] = "Yolow";
char b[] = {'H', 'e', 'l', 'l', 'o'};
printf("len = %d\n", strlen(a));
printf("len = %d", strlen(b));
在 C 中,字符串以 0 字節結束。 當您使用""
獲得字符串文字時,以及使用字符串函數修改字符串時,它會自動出現(例外: strncpy
)。
但是你的b
沒有這個 0 字節,所以它實際上不是一個字符串,它只是一個 char 數組。 你不能使用像strlen
這樣的字符串函數!
要將 0 放在那里,您可以這樣做:
char b[] = {'H', 'e', 'l', 'l', 'o', '\0'};
注意:使用'\0'
而不是0
只是裝飾性的,明確表示這是 0 字節值字符。 如果您願意,僅使用0
是相等的語法。
這是原文:
char b[] = {'H', 'e', 'l', 'l', 'o'};
這是一個將字符數組轉換為(以空結尾的)“字符串”的修復:
char b[] = {'H', 'e', 'l', 'l', 'o', '\0' }; // add ASCII 'NUL' to the array
或者,或者:
char b[] = {'H', 'e', 'l', 'l', 'o', 0 }; // add zero to the array
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.