C語言提供了strlen()函數,用于求字符串的長度。函數定義如下:
int strlen (const char *s);
包含的頭文件是:
#include <string.h>
該函數就是求參數 s 指向字符串的長度。在介紹“數組”的這一章節中,講解了字符串的定義。C語言規定,字符串必須以'\0'字符作為最後一個字符,表示字符串的結束字符,稱為:字符串結束符。字符串結束符'\0'的ASCII是0數值。
例如"abcde"這樣的字符串,實際上包含6個字符,分别是:
'a','b','c','d','e','\0'
可以看到,字符串就是由多個單獨的字符組成,其中,最後一個字符必須是字符串結束符'\0'。
那麼,我們可以把一個字符串賦值給字符數組,如下:
char array[6] = {'a','b','c','d','e','\0'};
如下是一個測試例子:
運行的結果如下:
可以看到,定義了字符數組array,數組名代表首地址,所以,數組名array可以表示一個指針,指向array數組存放數據的内存塊。
那麼,strlen(array); 獲取了array指向内存塊的字符個數。而且,計算字符個數的時候,是遇到字符串結束符 '\0' 字符就認為結束。所以,strlen()函數的返回的字符串長度,不包含字符串的結束符。
那麼,我們可以寫一個測試例子,設置 array[3] = '\0',就是設置數組中下标為3的元素是字符串結束符。測試代碼如下:
程序運行結果如下:
此時,array[6] 中的數據相當于 {'a', 'b', 'c', '\0', 'e', '\0'};那麼,使用strlen()函數獲取字符串個數時,就從array指向的第一個元素開始數,遇到第四個元素是'\0'字符,是字符串結束符。
所以,strlen()遇到字符串結束符之後,結束字符串的長度計算。
5 比較strlen和sizeof區别C語言中定義了sizeof操作符,獲取一個變量或者類型占據的容量大小。而strlen()是一個函數,獲取字符串的長度。程序測試例子如下:
程序運行結果如下:
可以看到,p1是一個指針,指向一個字符串。那麼,strlen()函數可以獲取該字符串的長度。sizeof運算符,獲取指針變量p1占據的内存空間大小。
那麼,指針變量p1占據4個字節,所以,sizeof(p1)返回4這個數值。
但是,如果sizeof操作符,接收的是一個字符串常量,那麼,它返回該字符串常量占據的内存空間。程序測試例子如下:
程序運行結果如下:
可以看到,sizeof操作符,獲取了 "xxxyy123" 字符串所占據的内存空間。它返回9這個數值,是因為占據了9個字節的内存空間。
注意,"xxxyy123"包含字符串結束符 '\0',所以,總共包含9個字符,占用9個字節的内存空間。而strlen()函數返回字符串的實際字符個數,返回數值8,不包含字符串結束符。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!