strlen函數的使用與模擬實現strlen的方法

strlen函數的簡單運用與模擬實現 strlen函數的簡單使用strlen函數的三種模擬實現使用臨時變量的方法使用函數遞歸的方法使用指針相減的方法

strlen函數的簡單使用

strlen函數是用來計算字符串長度的一個函數,返回類型是size_t
#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "hello world";
	size_t;//返回值是size_t unsigned int
	int len = strlen(arr);
	printf("len=%d\n", len);
	return 0;
}

下面就是對於返回值類型是size_t的一個很形象的例子

int main()
{
	const char* p1 = "abc";
	const char* p2 = "adbcdef";
	if (strlen(p1) - strlen(p2) > 0)
		//因為返回值是無符號數,所以沒有負數
	{
		printf("hehe");
	}
	else
	{
		printf("haha");
	}
	return 0;
}

strlen函數的三種模擬實現

使用臨時變量的方法

#include<stdio.h>
#include<assert.h>
//模擬實現strlen
size_t my_strlen(const char* str)
{
	int count = 0;//計數器
	assert(str != NULL);
	//斷言不是空指針,如果沒有這步,當是空指針的時候可能會崩潰
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "hello";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

使用函數遞歸的方法

#include<stdio.h>
#include<assert.h>
//不使用臨時變量
size_t my_strlen(const char* str)
{
	assert(str != NULL);
	if (*str != '\0')
	{
		return 1 + my_strlen(str + 1);
	}
	else
	{
		return 0;
	}
}
int main()
{
	char arr[] = "hello";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

使用指針相減的方法

//指針相減的做法
size_t my_strlen(const char* str)
{
	assert(str != NULL);
	const char* start = str;
	//str 不能初始化char類型,所以用const
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}
int main()
{
	char arr[] = "hello";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

到此這篇關於strlen函數的使用與模擬實現strlen的文章就介紹到這瞭,更多相關strlen函數模擬實現strlen內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: