下面将代码直接放出而不是以截图形式给出,希望能方便大家直接复制到自己编译器试一试
第一种:递归法
源代码:
#include <stdio.h>
int my_strlen(char* str)//用指针来接收
{
if (*str != '\0')//递归结束条件
return 1 + my_strlen(str+1);//未符合条件则调用自己,每调一次就加一次,
//(str+1)表示让指针移动到下一个位置
else//达到递归条件,递归结束返回0
return 0;
}
int main()
{
char str[20] = "abcdefg";
int len=my_strlen(str);
printf("%d",len);
return 0;
}
第二种:计数法
源代码:
int my_strlen(char* str)//用指针来接收
{
char* left = str;
int count = 0;
while (*left != '\0')
{
count++;//记字符个数,每循环一次就加一,直到循环结束
left++;//指针向后移动
}
return count;
}
int main()
{
char str[20] = "abcdefg";
int len=my_strlen(str);
printf("%d",len);
return 0;
}
第三种:指针相减法
源代码:
int my_strlen(char* parr)
{
char* str = parr;
while (*parr != '\0')
{
parr++;
}
return (parr - str);
}
int main()
{
char arr[] = "abcdefg";
int len = my_strlen(arr);
printf("%d\n",len);
return 0;
}