strlen函数的使用和模拟实现

什么是字符串

对于用"Hello word"引号引起来的一串字符叫字符串,字符串结尾隐藏'\0'
而用'a'引号引起来的是字符。

strlen函数参数类型和计算原理

strlen函数参数类型

在这里插入图片描述

strlen函数计算原理

1、strlen函数返回的是在字符串中'\0' 前面出现的字符个数,不包含'\0'
2、为确保计算正确,参数指向的字符串必须要以'\0'结束。

strlen函数的使用

代码如下:

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

结果:
在这里插入图片描述
注: 计算的字符串必须包含'\0',非则计算出的字符长度为随机值。

strlen函数的模拟实现

strlen函数实现有三种方式:

方法1:

size_t my_strlen(char* s1)
{
	size_t ret = 0;
	while (*s1 != '\0')
	{
		s1++;
		ret++;
	}
	return ret;
}

int main()
{
	char arr[] = "abcdefewrt ";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
	return 0;
}

方法2(指针-指针):

size_t my_strlen(const char* str)
{
	const char* start = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}

int main()
{
	char arr[] = "abcdefewrt ";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
	return 0;
}

方法3(递归方式):

size_t my_strlen(const char* str)
{
	if (*str != '\0')
		return 1+my_strlen(str+1);
	else 
		return 0;
}

int main()
{
	char arr[] = "abcdefewrt ";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
	return 0;
}

你可能感兴趣的:(C语言,c语言)