1. 程式人生 > >芒果iOS開發sizeof和strlen的區別

芒果iOS開發sizeof和strlen的區別

在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'之前的字串長度。