中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C語言的strlen函數(shù)怎么使用

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

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名申請、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、郟縣網(wǎng)站維護、網(wǎng)站推廣。

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

  • 獲取字符串長度

    • strlen

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

    • strcpy

    • strcat

    • strcmp

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

    • strncpy

    • strncat

    • strncmp

  • 字符串查找

    • strstr

    • strtok

  • 錯誤信息報告

    • strerror

接下來看看如何實現(xiàn)它們

獲取字符串長度

strlen

我們看看文檔是怎樣說的,如下

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, while sizeof(mystr) evaluates to 100strlen(mystr) returns 11.

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

綜上,可以知道

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

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

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

實現(xiàn)

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

比如

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

  2. 遞歸

  3. 指針 - 指針

接下來一一實現(xiàn)。

1. 計數(shù)器:使用一個變量來記錄 - count

斷言指針不為空是個好習慣~

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

就一直找'\0',當*str不是'\0'時,就count++,str++,直到遇到'\0'停止,然后返回count就是長度了。

2. 遞歸

斷言指針不為空是個好習慣~

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

最終就可以得出長度。

3. 指針-指針

斷言指針不為空是個好習慣~

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

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

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

以上就是“C語言的strlen函數(shù)怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:C語言的strlen函數(shù)怎么使用
網(wǎng)站路徑:http://www.rwnh.cn/article22/pcopjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站導航、外貿(mào)網(wǎng)站建設(shè)、Google、App開發(fā)

廣告

聲明:本網(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)

微信小程序開發(fā)
昌乐县| 邛崃市| 乌拉特中旗| 齐齐哈尔市| 延安市| 嵊州市| 大姚县| 阳原县| 荔浦县| 民和| 四平市| 罗源县| 南澳县| 莎车县| 页游| 黄平县| 平顶山市| 永城市| 牡丹江市| 上高县| 涟水县| 新营市| 神木县| 万源市| 神池县| 会宁县| 秀山| 江北区| 杭锦后旗| 遵义县| 浦江县| 龙陵县| 土默特右旗| 博兴县| 兰西县| 昭平县| 历史| 牙克石市| 松阳县| 永兴县| 大名县|