strlen函数详解&&注意事项&&模拟实现
Posted 在下赵某人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strlen函数详解&&注意事项&&模拟实现相关的知识,希望对你有一定的参考价值。
strlen函数详解
strlen函数
1-strlen函数返回的是在字符串中 ‘\\0’ 前面出现的字符个数(不包含 ‘\\0’ )。
eg1:
char arr[]="abcdef";//字符串以 '\\0' 作为结束标志
printf("%d\\n",strlen(arr));// '\\0' 前有六个字符,故输出6
2-参数指向的字符串必须要以 ‘\\0’ 结束。
eg2:
3-注意函数的返回值为是无符号的( 易错 )
eg3:
猜猜下面代码输出结果
int main()
{
const char* str1 = "abcdef";
const char* str2 = "bbb";
if (strlen(str2) - strlen(str1) > 0)
{
printf("str2>str1\\n");
}
else
{
printf("srt1>str2\\n");
}
return 0;
}
4-strlen函数的模拟实现
法1.计数器的方法
#include<stdio.h>
#include<assert.h>
int my_strlen(const char *str)
{
assert(str);
int count = 0;
while (*str != '\\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d",len);
return 0;
}
法2.递归的方法
#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)
{
assert(str);
if (*str == '\\0')
return 0;
else
return 1 + my_strlen(str + 1);
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d", len);
return 0;
}
法3.指针相减的方法
#include<stdio.h>
#include<assert.h>
int my_strlen(char* str)
{
assert(str);
char* ret = str;
while (*str != '\\0')
{
str++;
}
return str - ret;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d", len);
return 0;
}
以上是关于strlen函数详解&&注意事项&&模拟实现的主要内容,如果未能解决你的问题,请参考以下文章