递归和非递归分别实现strlen

时间:2024-05-21 18:04:50

思路:strlren主要是字符串是以'\0'为结尾标识来计算字符串的长度,所以要实现自己去写strlen也要从这方面下手。

非递归思想:应用循环的思路,以'\0'为循环结束的标识,每循环一次计数加一。

注意:char str [ ] 种类字符串数组作为参数传入函数时会被隐式转换为指针。

 //非递归:
#include <stdio.h>
int Strlen(char* str)
{
int i = ;
while (*str != '\0')
{
++str;
++i;
}
return i;
} int main()
{
char str[] = "abcdefghh";
printf("%d\n", Strlen(str));
return ;
}

递归思想:每调运一次函数就加一,最后还是以'\0'为结束标志。

 //递归:
#include<stdio.h>
int Strlen(char* str)
{
if (*str == '\0')
{
return ;
}
else
{
return + Strlen(++str);
}
} int main()
{
char str[] = "abcdefg";
printf("%d\n",Strlen(str));
return ;
}