今天小編給大家分享一下C語言中的strlen函數(shù)怎么使用的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供云岡企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站設(shè)計、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為云岡眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。
C語言中的字符串函數(shù)有如下這些
獲取字符串長度
strlen
長度不受限制的字符串函數(shù)
strcpy
strcat
strcmp
長度受限制的字符串函數(shù)
strncpy
strncat
strncmp
字符串查找
strstr
strtok
錯誤信息報告
strerror
接下來看看如何實現(xiàn)它們
我們看看文檔是怎樣說的,如下
strlen文檔
size_t strlen ( const char * str );Get string length
獲取字符串長度
Returns the length of the C string str.
返回C字符串str的長度
The length of a C string is determined by the terminating null-character: A C string is as long as the number of characters between the beginning of the string and the terminating null character (without including the terminating null character itself).
C字符串長度是由'\0'來確定的,也就是說從字符串的第一個開始只要遇到'\0'就結(jié)束長度計算(不包含'\0')
This should not be confused with the size of the array that holds the string. For example:
不用困惑你創(chuàng)建的數(shù)組的大小,比如這樣
char mystr[100]="test string";defines an array of characters with a size of 100
chars, but the C string with which mystr has been initialized has a length of only 11 characters. Therefore, whilesizeof(mystr)evaluates to100,strlen(mystr)returns11.定義一個大小為100的數(shù)組
mystr,然后mystr就已經(jīng)被初始化為一個長度為11的字符串了。所以呢,sizeof(mystr)會得出100, 而strlen(mystr)會返回11.
綜上,可以知道
字符串已經(jīng) '\0' 作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中 '\0' 前面出現(xiàn)的字符個數(shù)(不包含 '\0' )。
該函數(shù)只認(rèn)'\0',參數(shù)指向的字符串必須要以 '\0' 結(jié)束。
注意函數(shù)的返回值為size_t,是無符號的
strlen函數(shù)的實現(xiàn)有好幾種。
比如
計數(shù)器的方法
遞歸
指針 - 指針
接下來一一實現(xiàn)。
斷言指針不為空是個好習(xí)慣~
int my_strlen(char* str)
{
int count = 0;
assert(str != NULL);
while (*str != '\0') // while (*str)
{
count++;
str++;
}
return count;
}就一直找'\0',當(dāng)*str不是'\0'時,就count++,str++,直到遇到'\0'停止,然后返回count就是長度了。
斷言指針不為空是個好習(xí)慣~
int my_strlen(char* str)
{
assert(str != NULL);
char* p = str;
while(*p == '\0')
{
return 0;
}
return 1 + my_strlen(p + 1);
}比如傳入的str地址為 1000
那么 1 + my_strlen(p + 1) 中,p + 1,指針偏移后就是1001,以此類推。
1 + 1 + my_strlen(p + 1)
1 + 1 + 1 + my_strlen(p + 1)
1 + 1 + 1 + 1 + my_strlen(p + 1)
...
1 + 1 + 1 + 1 + ... + 0
最終就可以得出長度。
斷言指針不為空是個好習(xí)慣~
int my_strlen(char* str)
{
assert(str != NULL);
char* p = str;
while (*p != '\0')
{
p++;
}
return p - str;
}把指針str的地址賦值給一個新的指針p,str作為指向起始地址的指針,不改變它,記錄起始地址。
然后通過指針p進(jìn)行查找'\0',判斷當(dāng)前字符是否為'\0',不是就進(jìn)行p++,然后繼續(xù)判斷下一個字符,如此循環(huán),直到指針p找到'\0',然后用 當(dāng)前的指針p 減去 起始指針str 進(jìn)行返回,就是長度了。
以上就是“C語言中的strlen函數(shù)怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:C語言中的strlen函數(shù)怎么使用
網(wǎng)址分享:http://chinadenli.net/article48/jhjshp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站營銷、建站公司、響應(yīng)式網(wǎng)站、ChatGPT、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)