真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語(yǔ)言中strlen函數(shù)如何使用

本篇文章給大家分享的是有關(guān)C語(yǔ)言中strlen函數(shù)如何使用,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)南靖,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575

C語(yǔ)言中的字符串函數(shù)有如下這些

  • 獲取字符串長(zhǎng)度

    • strlen

  • 長(zhǎng)度不受限制的字符串函數(shù)

    • strcpy

    • strcat

    • strcmp

  • 長(zhǎng)度受限制的字符串函數(shù)

    • strncpy

    • strncat

    • strncmp

  • 字符串查找

    • strstr

    • strtok

  • 錯(cuò)誤信息報(bào)告

    • strerror

接下來(lái)看看如何實(shí)現(xiàn)它們

獲取字符串長(zhǎng)度

strlen

我們看看文檔是怎樣說(shuō)的,如下

strlen文檔

size_t strlen ( const char * str );

Get string length

獲取字符串長(zhǎng)度

Returns the length of the C string str.

返回C字符串str的長(zhǎng)度

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字符串長(zhǎng)度是由'\0'來(lái)確定的,也就是說(shuō)從字符串的第一個(gè)開(kāi)始只要遇到'\0'就結(jié)束長(zhǎng)度計(jì)算(不包含'\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, while sizeof(mystr) evaluates to 100, strlen(mystr) returns 11.

定義一個(gè)大小為100的數(shù)組mystr,然后mystr 就已經(jīng)被初始化為一個(gè)長(zhǎng)度為11的字符串了。所以呢, sizeof(mystr) 會(huì)得出 100, 而strlen(mystr) 會(huì)返回 11.

綜上,可以知道

  1. 字符串已經(jīng) '\0' 作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中 '\0' 前面出現(xiàn)的字符個(gè)數(shù)(不包含 '\0' )。

  2. 該函數(shù)只認(rèn)'\0',參數(shù)指向的字符串必須要以 '\0' 結(jié)束。

  3. 注意函數(shù)的返回值為size_t,是無(wú)符號(hào)的

實(shí)現(xiàn)

strlen函數(shù)的實(shí)現(xiàn)有好幾種。

比如

  1. 計(jì)數(shù)器的方法

  2. 遞歸

  3. 指針 - 指針

接下來(lái)一一實(shí)現(xiàn)。

1. 計(jì)數(shù)器:使用一個(gè)變量來(lái)記錄 - count

斷言指針不為空是個(gè)好習(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'時(shí),就count++,str++,直到遇到'\0'停止,然后返回count就是長(zhǎng)度了。

2. 遞歸

斷言指針不為空是個(gè)好習(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

最終就可以得出長(zhǎng)度。

3. 指針-指針

斷言指針不為空是個(gè)好習(xí)慣~

int my_strlen(char* str) 
{
    assert(str != NULL);
	char* p = str;
	while (*p != '\0') 
	{
		p++;
	}
	return p - str;
}

把指針str的地址賦值給一個(gè)新的指針p,str作為指向起始地址的指針,不改變它,記錄起始地址。

然后通過(guò)指針p進(jìn)行查找'\0',判斷當(dāng)前字符是否為'\0',不是就進(jìn)行p++,然后繼續(xù)判斷下一個(gè)字符,如此循環(huán),直到指針p找到'\0',然后用 當(dāng)前的指針p減去 起始指針str進(jìn)行返回,就是長(zhǎng)度了。

以上就是C語(yǔ)言中strlen函數(shù)如何使用,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:C語(yǔ)言中strlen函數(shù)如何使用
本文路徑:http://weahome.cn/article/iggidh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部