C語言中字符串長度的函數(shù)是strlen(),一個(gè)字符的長度為1;
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)新密免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
函數(shù)原型:
unsigned int strlen (char *s);
頭文件:
#include string.h
參數(shù)說明:s為指定的字符串;
功能說明:strlen()用來計(jì)算指定的字符串s
的長度,不包括結(jié)束字符'\0';
返回值:返回字符串s
的字符數(shù);
注意:strlen()
函數(shù)計(jì)算的是字符串的實(shí)際長度,遇到第一個(gè)'\0'結(jié)束。
示例:
#includestdio.h
#includestring.h
int main()
{
char str[] = "ab\nxyz";//\n為回車字符,占一個(gè)字節(jié)
printf("strlen(str)=%d\n", strlen(str));
return 0;
}
//輸出結(jié)果:strlen(str)=6
思路:因?yàn)樽址际且?\0'作為結(jié)束標(biāo)志,所以可以從字符串的第一個(gè)位置開始遍歷,直到出現(xiàn)'\0'停止遍歷,并每次下標(biāo)后移,字符串的長度加1,最后返回字符串長度。
參考代碼:
#include?"stdio.h"?
int?strlen(char?*s){//求字符串長度函數(shù)?
int?n;
for(n=0;s[n]!='\0';n++);
return?n;
}?
int?main()?{
char?a[100];
gets(a);?
printf("%d\n",strlen(a));
return?0;
}
/*
運(yùn)行結(jié)果:
wqerqew
7?
*/
1、在c語言中,可以通過庫函數(shù)strlen來計(jì)算字符串的長度,也可以通過循環(huán)計(jì)數(shù)來求取字符串長度。
函數(shù)原型:unsigned
int
strlen(char
*str);
功
能:統(tǒng)計(jì)字符串str中字符的個(gè)數(shù),不包含'\0'
返
回
值:返回字符個(gè)數(shù)
2、用strlen函數(shù)實(shí)現(xiàn):
char str[20];
int len; // 保存數(shù)組的長度
scanf("%s", str);
len = strlen(str); // 計(jì)算字符數(shù)組str的長度
注:需將頭文件#include
添加進(jìn)源文件中。3、用循環(huán)來實(shí)現(xiàn):
char str[20];
int len=0; // 保存數(shù)組的長度
scanf("%s", str);
while(str[len] != '\0') // 未檢測到結(jié)束字符
{
len++; // 統(tǒng)計(jì)字符數(shù)組str的長度
}
第1個(gè)輸出是8
10。sizeof運(yùn)算符得到的是數(shù)組的占用字節(jié)的大小,在定義數(shù)組a的時(shí)候沒有指明大小,編譯器根據(jù)初始化的內(nèi)容來決定a的大小,"abcdefg"是個(gè)字符串,連同表示字符串結(jié)束的'\0'共有8個(gè)字符,1個(gè)字符類型占用1個(gè)字節(jié),所以sizeof(a)是8。在定義數(shù)組b的時(shí)候已經(jīng)指明了大小,所以sizeof(b)是10。
第2個(gè)輸出是5
20。strlen函數(shù)是計(jì)算字符串的長度,字符串以'\0'表示結(jié)束,所以strlen在遇到hello后面的'\0'時(shí)就會(huì)返回。sizeof跟第1個(gè)問題一樣。