簡體   English   中英

使用“strlen”時字符串長度不准確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM