今天是力扣打卡第18天!
这道题并不是力扣上面的题目,而是一道作业,鹏哥说很重要,我便把它整理成一篇小博文了。
原题:自定义函数实现strlen()功能
先让我们感受一下strlen()函数:
#include<stdio.h> #include<string.h> int main() { char arr[] = "abcdefghij"; printf("%d\n", strlen(arr));//输出10 return 0; }
strlen()就是求字符串中字符的个数,也就是'\0'之前字符的个数
有三种方法实现,请听我一一介绍:
方法一:
#include<stdio.h> 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; }
方法二:递归法
#include<stdio.h> 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; }
方法三:指针 - 指针
#include<stdio.h> 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天!
加油啦!!