今天是力扣打卡第18天!
这道题并不是力扣上面的题目,而是一道作业,鹏哥说很重要,我便把它整理成一篇小博文了。
原题:自定义函数实现strlen()功能
先让我们感受一下strlen()函数:
int main()
{
char arr[] = "abcdefghij";
printf("%d\n", strlen(arr));//输出10
return 0;
}
strlen()就是求字符串中字符的个数,也就是'\0'之前字符的个数
有三种方法实现,请听我一一介绍:
方法一:
int my_strlen(char* arr)
{
int count = 0;
while (*arr != '\0')
{
count++;
arr++;
}
return count;
}
int main()
{
char arr[] = "abcdefghij";
int sz = my_strlen(arr);
printf("%d\n", sz);//输出10
return 0;
}
方法二:递归法
int my_strlen(char* arr)
{
//找边界
if (*arr == '\0')
{
return 0;
}
int count = my_strlen(arr + 1);
count++;
return count;
}
int main()
{
char arr[] = "abcdefghij";
int sz = my_strlen(arr);
printf("%d\n", sz);//输出10
return 0;
}
方法三:指针 - 指针
int my_strlen(char* arr)
{
char* p = arr;
while (*p != '\0')
{
p++;
}
return p - arr;
}
int main()
{
char arr[] = "abcdefghij";
int sz = my_strlen(arr);
printf("%d\n", sz);//输出10
return 0;
}
这里就要补充一个知识点了,指针 - 指针表示的是中间元素的个数,不过有前提哦,前提两个指针指向同一块空间。
结语
今天是力扣打卡第18天!
加油啦!!