芒果iOS開發sizeof和strlen的區別
阿新 • • 發佈:2019-01-25
在C語言中sizeof()函式和strlen()函式都可以求字串長度,那麼這兩個函式有什麼區別呢,下邊為大家介紹:
首先定義一個字元陣列:
<span style="font-size:18px;">char name[20] = {"Lamborghini"};</span>
這是一個有20個字元的陣列,也可以稱它為字串。因為字串是以‘\0’,系統會幫你自動新增上‘\0’結束符。
下邊用sizeof求一下字串長度:
<span style="font-size:18px;">int count = sizeof(name) / sizeof(char); printf("count = %d",count);</span>
輸出結果:
可以看出來當用sizeof輸出字串長度的時候是吧包括'\0'在內的空字元也輸出了。
下邊用strlen()求一下字串的長度:
<span style="font-size:18px;">unsigned long value = strlen(name);
printf("value = %lu\n", value);</span>
在這裡用strlen求字串長度的時候需要注意的是strlen求出的長度型別是unsigned long型別,需要用%lu轉義字元。
strlen求出的字串長度是11。
結論:在求字串長度的時候,sizeof求的是所有字串的長度,包括‘‘\0’以及空字元;而strlen求出的字串長度是以'\0'為結束標示的。在遇到'\0'結束返回'\0'之前的字串長度。