递归和非递归分别实现strlen
我们首先要清楚,每个字符串都是以\0结尾的,所以当这个字符串只有\0时,他的长度必定为0.同理,当我们在一个字符串中遇到\0,就说明这个字符串结束了。
递归:
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int Strlen(const char *str)
{
if (*str == '\0'){
return 0;
}
else{
return 1 + Strlen(str + 1);
}
}
int main()
{
char *str="abcdef";
int ret = Strlen(str);
printf("这串字符的长度为:%d\n",ret);
system("pause");
return 0;
}
运行结果:
非递归:
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int Strlen(const char *str)
{
int count = 0;
while(*str != '\0'){
count++;
str++;
}
return count;
}
int main()
{
char *str = "abcdef";
int ret = Strlen(str);
printf("这串字符的长度为:%d\n", ret);
system("pause");
return 0;
}
运行结果: