欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

  • 使用strlen
  • 使用指針:是常規(guī)的方法,但是要創(chuàng)建變量
  • 指針改進:不需要創(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、指針改進

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

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

4、使用遞歸

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

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ù)改進—常量指針

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

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

總結(jié)

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

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

相關文章

  • C++實現(xiàn)對輸入數(shù)字組進行排序

    C++實現(xiàn)對輸入數(shù)字組進行排序

    這里給大家介紹的是通過某個方法實現(xiàn)判斷命令行中輸入的數(shù)字是幾個,這樣再用冒泡法排序的時候就不用擔心輸入的是幾個數(shù)字,用到的知識主要是冒泡法排序
    2015-11-11
  • C++實現(xiàn)翻轉(zhuǎn)單詞順序

    C++實現(xiàn)翻轉(zhuǎn)單詞順序

    這篇文章給大家匯總介紹了C++實現(xiàn)翻轉(zhuǎn)單詞順序的三種方法,都非常的簡單,需要的朋友可以參考下
    2016-07-07
  • C語言動態(tài)內(nèi)存管理malloc柔性數(shù)組示例詳解

    C語言動態(tài)內(nèi)存管理malloc柔性數(shù)組示例詳解

    這篇文章主要為大家介紹了C語言動態(tài)內(nèi)存管理malloc柔性數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 詳解C/C++性能優(yōu)化背后的方法論TMAM

    詳解C/C++性能優(yōu)化背后的方法論TMAM

    開發(fā)過程中我們多少都會關注服務的性能,然而性能優(yōu)化是相對比較困難,往往需要多輪優(yōu)化、測試,屬于費時費力,有時候還未必有好的效果。但是如果有較好的性能優(yōu)化方法指導、工具輔助分析可以幫助我們快速發(fā)現(xiàn)性能瓶頸所在,針對性地進行優(yōu)化,可以事半功倍
    2021-06-06
  • 如何判斷一個整數(shù)的二進制中有多少個1

    如何判斷一個整數(shù)的二進制中有多少個1

    本篇文章是對如何判斷一個整數(shù)的二進制中有多少個1的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • opencv實現(xiàn)三幀差法解析

    opencv實現(xiàn)三幀差法解析

    這篇文章主要介紹了opencv實現(xiàn)三幀差法的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言中雙向鏈表和雙向循環(huán)鏈表詳解

    C語言中雙向鏈表和雙向循環(huán)鏈表詳解

    這篇文章主要介紹了C語言中雙向鏈表和雙向循環(huán)鏈表詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • 解析一個有關sizeof用法的題目--sizeof(i++)

    解析一個有關sizeof用法的題目--sizeof(i++)

    本篇文章是對一個關于sizeof用法的題目進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C++雙向鏈表實現(xiàn)簡單通訊錄

    C++雙向鏈表實現(xiàn)簡單通訊錄

    這篇文章主要為大家詳細介紹了C++雙向鏈表實現(xiàn)簡單通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 基于實現(xiàn)Qt秒表設計

    基于實現(xiàn)Qt秒表設計

    這篇文章主要為大家詳細介紹了基于實現(xiàn)Qt秒表設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論