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' )
感谢大家的观看,希望你能从这篇文章中学到一些东西(如有错误,提醒我,我会及时修改)
谢谢大家!!!