思路:因?yàn)樽址际且?\0'作為結(jié)束標(biāo)志,所以可以從字符串的第一個(gè)位置開始遍歷,直到出現(xiàn)'\0'停止遍歷,并每次下標(biāo)后移,字符串的長度加1,最后返回字符串長度。

創(chuàng)新互聯(lián)建站長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為崇明企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),崇明網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
參考代碼:
#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?
*/
C語言中字符串有一個(gè)結(jié)束符'\0',一個(gè)正常的字符串的最后一個(gè)字符都是'\0',在你定義一個(gè)常量字符串時(shí)就自動(dòng)幫你加上去了,比如"abc"其實(shí)有4個(gè)字符{'a', 'b', 'c', '\0'},最后一個(gè)'\0'表示字符串到這就結(jié)束了,以防止內(nèi)存讀取越界,同時(shí)也以此來計(jì)算字符串長度,而不是再傳一個(gè)int參數(shù)表示字符串的長度。因此a在內(nèi)存中長度為6,但由于最后一個(gè)字符'\0'只是結(jié)束符,所有一般說長度時(shí)會(huì)忽略掉最后一個(gè)字符
string.h中提供了strlen函數(shù)可以方便地計(jì)算字符串的長度,不過注意strlen返回值的類型為size_t,x64下定義為uint64_t,x86下為uint32_t,所以記得進(jìn)行類型轉(zhuǎn)換
第一種:調(diào)用C庫函數(shù)strlen(頭文件string.h)
#include stdio.h
#include string.h
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
printf("%d\r\n", (int)strlen(a));
return 0;
}
第二種:手動(dòng)計(jì)算長度
#include stdio.h
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
char* p = a;
while ('\0' != *p)
{
p++;
}
printf("%d\r\n", (int)(p - a));
return 0;
}
#includeiostream
using namespace std;
int main()
{
int character(char *a);
char a[20];
int length;
cout"請輸入一個(gè)字符串:"endl;
cina;
length=character(a);
cout"字符串長度為:"lengthendl;
return 0;
}
擴(kuò)展資料:
return用法:
在C++的關(guān)鍵字,它提供了終止函數(shù)執(zhí)行的一種方式。當(dāng)return語句提供了一個(gè)值時(shí),這個(gè)值就成為函數(shù)的返回值.
1、C
在C89中,main()是可以接受的。Brian W.Kernighan和Dennis M.Ritchie的經(jīng)典巨著The C programming Language 2e(《C程序設(shè)計(jì)語言第二版》)用的就是main()。不過在最新的C99標(biāo)準(zhǔn)中,只有以下兩種定義方式是正確的:
int main(void)
int main(int argc,char*argv[])
當(dāng)然,我也可以做一點(diǎn)小小的改動(dòng)。例如:char*argv[]可以寫成char**argv;argv和argc可以改成別的變量名(如intval和charval),不過一定要符合變量的命名規(guī)則。
如果不需要從命令行中獲取參數(shù),請用int main(void);否則請用int main(int argc,char*argv[])。
main函數(shù)的返回值類型必須是int,這樣返回值才能傳遞給程序的激活者(如操作系統(tǒng))。
如果main函數(shù)的最后沒有寫return語句的話,C99規(guī)定編譯器要自動(dòng)在生成的目標(biāo)文件中(如exe文件)加入return 0;,表示程序正常退出。不過,我還是建議你最好在main函數(shù)的最后加上return語句,雖然沒有這個(gè)必要,但這是一個(gè)好的習(xí)慣。
注意,vc6不會(huì)在目標(biāo)文件中加入return 0;,大概是因?yàn)関c6是98年的產(chǎn)品,所以才不支持這個(gè)特性。現(xiàn)在明白我為什么建議你最好加上return語句了吧!不過,gcc3.2(Linux下的C編譯器)會(huì)在生成的目標(biāo)文件中加入return 0;。
2、C++
C++98中定義了如下兩種main函數(shù)的定義方式:
int main()
int main(int argc,char*argv[])
int main()等同于C99中的int main(void);int main(int argc,char*argv[])的用法也和C99中定義的一樣。同樣,main函數(shù)的返回值類型也必須是int。
如果main函數(shù)的末尾沒寫return語句,C++98規(guī)定編譯器要自動(dòng)在生成的目標(biāo)文件中加入return 0;。同樣,vc6也不支持這個(gè)特性,但是g++3.2(Linux下的C++編譯器)支持。
參考資料:
百度百科——return
C語言計(jì)算字符串長度,可以手動(dòng)計(jì)算也可以使用庫函數(shù)或者sizeof()操作符。
方法:
自定義函數(shù)求長度
使用strlen()函數(shù)
使用sizeof()操作符
自定義函數(shù):
int cont_str(char *s)
{
int i = 0; ? ?
while ( str[i++] != '\0')? ?;
return i;
}
使用string頭文件中的strlen()函數(shù):
strlen(str); //假設(shè)str為待求的字符串?dāng)?shù)組名
使用sizeof()操作符:
sizeof(str)/sizeof(str[0]); //假設(shè)str為待求的字符串?dāng)?shù)組名
注意:
strlen()函數(shù)求出的字符串長度為有效長度,既不包含字符串末尾結(jié)束符 ‘\0’;
sizeof()操作符求出的長度包含字符串末尾的結(jié)束符 ‘\0’;
當(dāng)在函數(shù)內(nèi)部使用sizeof()求解由函數(shù)的形參傳入的字符數(shù)組的長度時(shí),得到的結(jié)果為指針的長度,既對(duì)應(yīng)變量的字節(jié)數(shù),而不是字符串的長度,此處一定要小心。
分享題目:c語言求函數(shù)長度 c語言求長度的函數(shù)
分享鏈接:http://chinadenli.net/article36/ddocopg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、App開發(fā)、云服務(wù)器、品牌網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)