strlen()函数--使用及模拟实现

目录

1、使用介绍

2、模拟实现

(1)方法一:计数器

(2)方法二: 指针相减

(3)方法三:递归


★★★★★ 互相学习,共同进步!

1、使用介绍

strlen()函数的功能是用来求取字符串长度的,我们只需给它传递一个字符串的首地址参数,或者是使用者自己想要开始计数的位置即可。需要注意的是,strlen()只有遇到'\0'才会停止,因此被求取字符串必须以'\0'结尾。

正确使用代码如下:

#include
#include

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

代码运行结果: 8

错误使用代码如下:

#include
#include

int main()
{
	char arr[] = {'a','b','c','d','e','f'};
	int ret = strlen(arr);
	printf("%d\n", ret);
	return 0;
}

代码运行结果: 19  (我自己运行的结果,不唯一也不确sh

上面这个代码,使用者本意是要求 "abcdef" 的长度,但写成了字符数组的形式,且结尾处没有'\0',所以strlen()函数求字符串长度时遇到 ' f ' 不会停止,而后面内存中的内容是未知的。所以求取的结果也是未知的,唯一可以确定的是strlen()函数停下来的未知内存中是'\0'。

2、模拟实现

(1)方法一:计数器

代码实现如下:

#include

int my_strlen(char* p)
{
	int count = 0;
	while (*(p + count))
	{
		count++;
	}
	return count;
}

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

(2)方法二: 指针相减

代码实现如下:

#include

int my_strlen(char* p)
{
	char* tmp = p;
	while (*p)
	{
		p++;
	}
	return p - tmp;
}

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

(3)方法三:递归

代码实现如下:

#include

int my_strlen(char* p)
{
	if (*p == '\0')
	{
		return 0;
	}
	return 1 + my_strlen(p+1);
}

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

★★★★★ 感谢阅读,希望能够帮助到你!!!

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