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

C語言自定義實現strlen函數的3種方法總結

 更新時間:2023年08月14日 09:12:56   作者:蘇貝貝  
這篇文章帶大家了解C語言中自定義實現strlen函數的3種方法,計數器,遞歸以及指針,這三種方法通過代碼示例介紹的非常詳細,需要的朋友可以參考下

在自定義實現strlen函數之前,我們簡單的介紹一下strlen函數。strlen的功能就是求字符串長度。它只能作用于字符串,是C語言中的庫函數,使用時要引用 < string.h> 這個頭文件。每個字符串結尾處都隱藏有 ‘\0’ ,它是字符串的結束標志,所以我們在用strlen函數求字符串長度時,遇見 ‘\0’ 時就停止讀取字符串,字符串長度為 ‘\0’ 之前的字符個數,不包括 ‘\0’ 。

簡單介紹strlen函數之后,讓我們開始正文

1.計數器

這是3種方法里面最簡單的一種,只用將數組作為函數參數,再用計數器i充當數組下標,若arr[i]不是轉義字符 ‘\0’ ,i++;直到為 ‘\0’ 時,返回計數器i

int my_strlen(char arr[])
{
	int i = 0;
	while (arr[i] != '\0')
	{
		i++;
	}
	return i;
}
int main()
{
	char arr[] = "abcdefg";//abcdefg\0
	int len = my_strlen(arr);
	printf("%d", len);
	return 0;
}
//7

2.遞歸(不用創(chuàng)造臨時變量)

將數組作為函數實參,實際上傳過去的是數組首元素地址,用指針接收變量str接收,對str進行解引用操作找到str指向的字符,若該字符為 ‘\0’ ,則返回0;否則返回1+my_strlen(str + 1),再進入my_strlen函數時,str指向下一位,繼續(xù)上述判斷。

例如:若下面代碼中char arr[ ]=“ab”,將數組名arr作為函數實參,用指針str接收,此時str指向數組首元素即字符a。對指針str進行解應用str=a,a!= ‘\0’ ,所以函數返回1+my_strlen(str + 1),再進行下一次遞歸, 此時str指向下一位字符b。對指針str進行解應用str=b,b!= ‘\0’ ,所以函數返回1+my_strlen(str+1),再進行下一次遞歸, 此時str指向下一位字符 ‘\0’ 。對指針str進行解應用*str= ‘\0’ ,所以函數返回0,接著返回上一次遞歸,此時str指向字符b,my_strlen(str + 1) 的結果為0,所以1+my_strlen(str + 1)的結果=1并再將1返回上一次遞歸。此時str指向字符a,my_strlen(str + 1)的結果=1,所以1+my_strlen(str + 1)結果=2,將2作為最后的值返回。

int my_strlen(char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}
int main()
{
	char arr[] = "abcdefg";//abcdefg\0
	int len = my_strlen(arr);
	printf("%d", len);
	return 0;
}

3.指針(指針-指針的差值的絕對值是它們之間的元素個數)

思想:只要最后指針str指向的是 ‘\0’ ,指針start指向的是數組首元素a,那么str - start就是字符串長度
創(chuàng)建指針變量start存放數組首元素地址(str就是數組首元素地址),再用while循環(huán)使得str最后指向 ‘\0’ ,返回兩指針的差值

int my_strlen(char* str)
{
	char* start = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}
int main()
{
	char arr[] = "abcdefg";
	int len = my_strlen(arr);
	printf("%d", len);
	return 0;
}

到此這篇關于C語言自定義實現strlen函數的3種方法總結的文章就介紹到這了,更多相關C語言實現strlen函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++如何實現簡易掃雷游戲

    C++如何實現簡易掃雷游戲

    這篇文章主要為大家詳細介紹了C++如何實現簡易掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++中string類的常用方法實例總結

    C++中string類的常用方法實例總結

    string類是C++提供的抽象數據類型,其支持可變長字符串,下面這篇文章主要給大家總結介紹了關于C++中string類的常用方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • 使用C/C++語言生成一個隨機迷宮游戲

    使用C/C++語言生成一個隨機迷宮游戲

    迷宮相信大家都走過,主要是考驗你的邏輯思維。今天小編使用C語言生成一個隨機迷宮游戲,具體實現代碼,大家通過本文學習吧
    2016-12-12
  • C++中零拷貝的多種實現方式

    C++中零拷貝的多種實現方式

    本文主要介紹了C++中零拷貝的實現示例,旨在在減少數據在內存中的不必要復制,從而提高程序性能、降低內存使用并減少CPU消耗,零拷貝技術通過多種方式實現,下面就來了解一下
    2025-06-06
  • 詳解QListWidget如何實現自定義Item效果

    詳解QListWidget如何實現自定義Item效果

    這篇文章主要為大家介紹了如何通過QListWidget實現自定義Item效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-04-04
  • C++繼承詳細介紹

    C++繼承詳細介紹

    這篇文章主要介紹了C++繼承詳情,在我們進行開發(fā)的時候,我們經常會遇到抽象出來的類之間具有繼承關系。一個類繼承了另外一個類,被繼承的類成為基類或父類,繼承的類成為子類或派生類,下面文章的詳細內容,需要的小伙伴可以參考一下
    2022-01-01
  • C語言版學生信息管理系統

    C語言版學生信息管理系統

    這篇文章主要為大家詳細介紹了C語言版學生信息管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • VS配置好Qt環(huán)境之后但無法打開ui界面的問題解決

    VS配置好Qt環(huán)境之后但無法打開ui界面的問題解決

    本文主要介紹了VS配置好Qt環(huán)境之后但無法打開ui界面的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-06-06
  • C++ socket實現miniFTP

    C++ socket實現miniFTP

    這篇文章主要為大家詳細介紹了C++ socket實現miniFTP的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 線程按指定順序輸出字符到數組的實例代碼

    線程按指定順序輸出字符到數組的實例代碼

    這篇文章主要介紹了線程按指定順序輸出字符到數組的實例代碼,需要的朋友可以參考下
    2014-02-02

最新評論

宣武区| 铜陵市| 衡阳县| 新沂市| 罗定市| 漾濞| 寿光市| 南通市| 垫江县| 聂拉木县| 都昌县| 古丈县| 隆子县| 扎鲁特旗| 龙江县| 佛山市| 阳泉市| 昭通市| 新乐市| 承德县| 武冈市| 隆回县| 华坪县| 务川| 通城县| 西安市| 安达市| 丰城市| 伊金霍洛旗| 荥经县| 枝江市| 闻喜县| 玉环县| 平乡县| 大兴区| 淮北市| 内江市| 龙江县| 邵阳市| 安塞县| 修文县|