1.了解一下strlen函数
我们可以看到,strlen的返回值是size_t,然后函数的参数是一个字符类型的数组,这个数组用char*类型来接收,且这个数组内容不能被修改。
还有一点在使用strlen函数需要包含#include<string.h>。
2.strlen函数的作用及用法
strlen函数是用来读取字符串长度的,并且在读到'\0'的时候会停止,这个长度不会包含'\0'。
int main()
{
char arr[] = "hello world";
int len = strlen(arr);
printf("%d ", len);
return 0;
}
这里我们可以看到这个字符串"hello world"的长度为11了。
3.三种strlen函数的模拟实现
第一种:计数器实现strlen
size_t my_strlen(const char* ch)
{
int count = 0;
while (*ch != '\0')
{
count++;
ch++;
}
return count;
}
int main()
{
char ch[] = "hello world";
int ret = my_strlen(ch);
printf("%d\n", ret);
return 0;
}
第二种:递归实现strlen
size_t my_strlen(const char* arr1)
{
if (*arr1 != '\0')
return my_strlen(arr1 + 1) + 1;
return 0;
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d", ret);
return 0;
}
第三种:指针-指针
size_t my_strlen(const char* arr2)
{
const char* start = arr2;
const char* end = arr2;
while (*end != '\0')
{
end++;
}
return end - start;
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d", ret);
return 0;
}
4.易错点解析
我们可以从第一点可以知道strlen函数的返回类型是size_t,我们可以写一段代码
int main()
{
if (strlen("abc") - strlen("abcdef") >= 0)
printf(">=\n");
else
printf("<\n");
return 0;
}
这一段代码我们可能会认为是<,但无符号整数相减还是一个无符号整数,所以是>=。