关于strlen的使用

strlen

size_t strlen(const char* str);

  • 字符串 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符串的个数(不包含 '\0' )
  • 参数指向的字符串必须要以 '\0' 结束
  • 注意函数的返回值为size_t ,是无符号的(注意,容易错) 

 在这里想请大家思考一下这个问题

#include<stdio.h>
#include<string.h>
int main()
{
	if (strlen("abc") - strlen("abcdef") > 0)
	{
		printf("123");
	}
	else
	{
		printf("321");
	}
	return 0;
}

这个程序输出的结果是什么?

我想,这么简单的程序一定有坑,所以我选123 

哈哈,没错,就是有坑,答案就是123

原因:strlen的返回值类型是size_t(无符号整型)两个无符号整型相减,还是无符号整型,  所以不可能小于零的,所以答案为123

strlen函数的模拟实现

#include<stdio.h>

int my_strlen(const char* str)        //这里我用 int 代替了 size_t
{
	int n = 0;
	while (*(str++))
	{
		n++;
	}
	return n;
}

int main()
{
	printf("%d\n", my_strlen("abcd"));
	return 0;
}

上面的模拟实现,我用 int 代替了 size_t  

 我认为两个都可以,但是 int 比 size_t 能更好的理解(如果追求严谨,可以用size_t)

总结 

  • 注意strlen函数的返回值是无符号整型,这是容易忽略的
  • strlen函数是以 ' \0' 结束的(返回值不包含 '/0' )

感谢大家的观看,希望你能从这篇文章中学到一些东西(如有错误,提醒我,我会及时修改)

谢谢大家!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值