每日小知识---strlen函数详见以及三种模拟实现方法,进来必有收获。

🌞各位看官:欢迎来到(每日小知识)

🌟建议订阅专栏--> 每日小知识

🌟也欢迎关注小编--> 小峰同学

赶快上🚌跟着小编每天进步一点点,开心学习每一天。

😘如果觉得小编的文章对你有帮助,可以一键三连支持小编

😍你的支持才是小编最大的动力

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bOw5ZCM5a2mJiYm,size_6,color_FFFFFF,t_70,g_se,x_16

 

👻本期重点:strlen函数的详细解析以及模拟实现strlen

目录:

strlen函数详解

原函数:

参数:

返回类型:

注意事项:

一个常见错误案例:

模拟实现1:

计数器

模拟实现2:

递归

模拟实现3:

指针-指针

strlen函数详解

原函数:

size_t  strlen  ( const char * str );

参数:

是一个指针类型的,就是所求字符串首字母的地址。

返回类型

size_t类型的,也就unsigned int 类型的变量。(特别注意这一点)

注意事项:

  • 字符串已经以'\0'作为结束标志,strlen函数返回的是字符串中\0前面出现的字符个数,不包含\0
  • 参数指向的字符串必须以\0结束
  • 注意返回值是soze_t(unsigned int)

一个常见错误案例:


#include <stdio.h>
int main()
{
	const char* str1 = "abcdef";
	const char* str2 = "bbb";
	if (strlen(str2) - strlen(str1) > 0)
	{
		printf(">");
	}
	else
	{
		printf(">");
	}
	return 0;
}

这里的strlen(str1)=3   strlen(str2)=6。计算结果应该为-3.但是>前面是unsigned int 类型的数据,后面是int 类型的数据。在运算的时候会发生算数转换。都变成unsigned int 类型的数据。-3被看成是unsigned int类型的数据,是一个很大的数。

所以打印结果为   ">"

模拟实现1:

计数器

size_t my_strlen(const char* str)
{
	unsigned int count = 0;
	while (*str != '\0')
	{
		str++;
		count++;

	}

	return count;
}

模拟实现2:

递归


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

模拟实现3:

指针-指针


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

}



今天就讲到这里了 谢各位看官!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小峰同学&&&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值