strlen:
结构: size_t strlen(const char*str)
注:str是字符串的地址。
计数原理:从字符串首字符开始,遍历整个字符串并计数,直至遇到‘\0’(\0是字符串结束标志,不计入长度)。
注意事项:
1.源字符串必须以‘\0’结束,否则最终得到的字符串长度为随机值。
2.此函数返回值为size_t。
3.‘\0’不计入字符串长度。
4.若在字符串中提前遇到‘\0’,则计数结束,‘\0’后的字符数将不会计入。
三种模拟实现strlen函数的方法:
一.计数器
size_t my_strlen(const char* str)
{
assert(str);
size_t count = 0;
while(*str != ‘\0’)
{
str++;
count++;
}
return count;
}
int main( )
{
char arr[ ] = "lishiya";
size_t ret = my_strlen(arr);
printf("%zd\n", ret);
return 0;
}
二.指针-指针
size_t my_strlen(const char*str)
{
assert(str);
char* start = str;
while(*str != ‘\0’)
{
str++;
}
return str - start;
}
int main( )
{
char arr[ ] = "lishiya";
size_t ret = my_strlen(arr);
printf("%zd\n", ret);
return 0;
}
三.递归
size_t my_strlen(const char* str)
{
assert(str);
while(*str != '\0')
{
return my_strlen(str + 1);
}
else
{
return 0;
}
}
int main( )
{
char arr[ ] = "lishiya";
size_t ret = my_strlen(arr);
printf("%zd\n", ret);
return 0;
}
欢迎各位大神补充!