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

strlen()函数--使用及模拟实现,第1张

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

目录

1、使用介绍

2、模拟实现

(1)方法一:计数器

(2)方法二: 指针相减

(3)方法三:递归


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

1、使用介绍

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

正确使用代码如下:

#include
#include

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

代码运行结果: 8

错误使用代码如下:

#include
#include

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

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

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

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("%dn", 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("%dn", ret);
	return 0;
}
(3)方法三:递归

代码实现如下:

#include

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5710447.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存