最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言strlen函數(shù)實現(xiàn)讀取字符串長度詳解

 更新時間:2022年04月13日 15:28:50   作者:初學(xué)C語言者  
這篇文章主要介紹了用C語言的strlen函數(shù)來實現(xiàn)讀取字符串長度的過程,strlen所作的是一個計數(shù)器的工作,它從內(nèi)存的某個位置開始掃描,直到碰到第一個字符串結(jié)束符'\0'為止

前言

讀取字符串的長度,使用函數(shù) strlen。這里我們寫一個函數(shù),來讀取字符串的長度,本文內(nèi)容主要包括:

  • 使用strlen
  • 使用指針:是常規(guī)的方法,但是要創(chuàng)建變量
  • 指針改進(jìn):不需要創(chuàng)建變量,要求高,不易掌握
  • 使用遞歸:不需要創(chuàng)建變量,要求高,不易掌握
  • 介紹常量指針—— const char* str

1、函數(shù)strlen

int main()
{
	char arr[] = "abcd";
	int len = strlen(arr);
	printf("%d\n", len);
	return 0;
}

2、使用指針

字符串以字符 ‘\0’ 結(jié)尾,需要創(chuàng)建變量

int my_strlen(char* str)
{
	int count = 0;//統(tǒng)計字符的個數(shù),需要創(chuàng)建變量
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "abcd";
	//char* str = arr;
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

3、指針改進(jìn)

使用指針,不創(chuàng)建變量,不需要創(chuàng)建變量,面試題級別,要求高,不易掌握

int my_strlen(char* str)
{
	char* p = str;//記錄首元素地址的位置
	while (*p != '\0')
	{
		p++;
	}
	return p - str;//尾地址-首地址,就是字符串的長度
}

4、使用遞歸

遞歸函數(shù),不需要創(chuàng)建變量,以大化小,進(jìn)行分解,面試題級別,要求高,不易掌握

my_strlen("abcdef")
1+my_strlen("bcdef")
1+1+my_strlen("cdef")
1+1+1+ my_strlen("def")
1+1+1+1+ my_strlen("ef")
1 + 1 + 1 + 1 +1+my_strlen("f")
1 + 1 + 1 + 1 + 1 + 1+ my_strlen("")
1 + 1 + 1 + 1 + 1 + 1 + 0 = 6

int my_strlen(char* str)
{//不需要創(chuàng)建變量
	if (*str != '\0')
		return 1 + my_strlen(str+1);//遞歸
	else
		return 0;
}

5、my_strlen函數(shù)的參數(shù)改進(jìn)—常量指針

定義常量指針,const 對 *str 的內(nèi)容進(jìn)行限制,字符串的內(nèi)容在傳參時不會發(fā)生改變,將上面的自定義函數(shù),都換成下面的代碼:

int my_strlen(const char* str)//常量指針
{
}

總結(jié)

寫一個函數(shù),來讀取字符串的長度,推薦掌握指針的寫法。如果后面還有別的函數(shù)的寫法,再進(jìn)行更新。

到此這篇關(guān)于C語言strlen函數(shù)實現(xiàn)讀取字符串長度詳解的文章就介紹到這了,更多相關(guān)C語言 字符串長度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實現(xiàn)經(jīng)典排序算法的示例代碼

    C語言實現(xiàn)經(jīng)典排序算法的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言實現(xiàn)經(jīng)典排序算法中的冒泡排序、選擇排序、插入排序、希爾排序,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-08-08
  • C++11?condition_variable條件變量的用法說明

    C++11?condition_variable條件變量的用法說明

    這篇文章主要介紹了C++11?condition_variable條件變量的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++單例模式的懶漢模式和餓漢模式詳解

    C++單例模式的懶漢模式和餓漢模式詳解

    這篇文章主要為大家詳細(xì)介紹了C++懶漢模式和餓漢模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言進(jìn)階教程之字符函數(shù)和字符串函數(shù)

    C語言進(jìn)階教程之字符函數(shù)和字符串函數(shù)

    C語言中對字符和字符串的處理很是頻繁,但是C語言本身是沒有字符串類型的,字符串通常放在常量字符串中或者字符數(shù)組中,下面這篇文章主要給大家介紹了關(guān)于C語言進(jìn)階教程之字符函數(shù)和字符串函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • C++ Boost Bimap示例詳細(xì)講解

    C++ Boost Bimap示例詳細(xì)講解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C語言排序算法之桶排序解析

    C語言排序算法之桶排序解析

    這篇文章主要介紹了C語言排序算法之桶排序解析,桶排序Bucket?sort或所謂的箱排序,是一個排序算法,工作的原理是將數(shù)組分到有限數(shù)量的桶里,每個桶再分別排序,大部分是在分桶時,即插入時就排序了,需要的朋友可以參考下
    2023-10-10
  • C語言創(chuàng)建數(shù)組實現(xiàn)函數(shù)init,empty,reverse

    C語言創(chuàng)建數(shù)組實現(xiàn)函數(shù)init,empty,reverse

    這篇文章主要介紹了C語言創(chuàng)建數(shù)組實現(xiàn)函數(shù)init,empty,reverse,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實例代碼

    C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實例代碼

    這篇文章介紹了C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實例代碼,有需要的朋友可以參考一下
    2013-10-10
  • 一篇文章讓你輕松理解C++中vector和list區(qū)別

    一篇文章讓你輕松理解C++中vector和list區(qū)別

    對于學(xué)c語言的同學(xué)來說,vector和list這兩個東西經(jīng)常會搞錯,下面這篇文章主要給大家介紹了關(guān)于C++中vector和list區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 基于C語言實現(xiàn)推箱子游戲

    基于C語言實現(xiàn)推箱子游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實現(xiàn)推箱子游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評論

马鞍山市| 临夏县| 佛山市| 甘孜县| 合川市| 西城区| 夹江县| 肥乡县| 岳池县| 历史| 邳州市| 南城县| 容城县| 龙胜| 阿拉善盟| 长宁县| 奎屯市| 潞西市| 贵阳市| 永济市| 四川省| 莫力| 罗江县| 宜章县| 大石桥市| 平利县| 和平区| 安龙县| 沁阳市| 安宁市| 古蔺县| 呼和浩特市| 水富县| 八宿县| 巴马| 宜兰县| 绵阳市| 分宜县| 循化| 巴彦淖尔市| 武义县|