頭文件:#include <string.h>
strlen()函數用來計算字符串的長度,其原型為:unsigned int strlen (char *s);
【參數說明】s為指定的字符串。
strlen()用來計算指定的字符串s 的長度,不包括結束字符"\0"。
【返回值】返回字符串s 的字符數。
注意一下字符數組,例如
char str[100] = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
定義了一個大小為100的字符數組,但是僅有開始的11個字符被初始化了,剩下的都是0,所以 sizeof(str) 等於100,strlen(str) 等於11。
如果字符的個數等於字符數組的大小,那么strlen()的返回值就無法確定了,例如
char str[6] = "abcxyz";
strlen(str)的返回值將是不確定的。因為str的結尾不是0,strlen()會繼續向后檢索,直到遇到'\0',而這些區域的內容是不確定的。
注意:strlen() 函數計算的是字符串的實際長度,遇到第一個'\0'結束。如果你只定義沒有給它賦初值,這個結果是不定的,它會從首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是變量聲明后所占的內存數,不是實際長度,此外sizeof不是函數,僅僅是一個操作符,strlen()是函數。
【函數示例】取得字符串 的長度。
#include<stdio.h>
#include<string.h>
int main()
{
char *str1 = "http://see.xidian.edu.cn/cpp/u/shipin/";
char str2[100] = "http://see.xidian.edu.cn/cpp/u/shipin_liming/";
char str3[5] = "12345";
printf("strlen(str1)=%d, sizeof(str1)=%d\n", strlen(str1), sizeof(str1));
printf("strlen(str2)=%d, sizeof(str2)=%d\n", strlen(str2), sizeof(str2));
printf("strlen(str3)=%d, sizeof(str3)=%d\n", strlen(str3), sizeof(str3));
return 0;
}
運行結果:
strlen(str1)=38, sizeof(str1)=4
strlen(str1)=45, sizeof(str1)=100
strlen(str1)=53, sizeof(str1)=5
上面的運行結果,strlen(str3)=53顯然不對,53是沒有意義的。