非递归:
核心思想:字符指针向后移动,未遇到‘\0’,则计数累加。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char* p = "abcdef";
int len = strlen(p);
printf("%d\n", len);
system("pause");
return 0;
}
递归:
核心思想:
int strlen ( char * str )
出口:空串返回0;
递推: 1 + strlen (str + 1)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int strlen(char* str)
{
if (*str == '\0')
return 0;
else return 1 + strlen(str + 1);
}
int main()
{
char* p = "abcdef";
int len = strlen(p);
printf("%d\n", len);
system("pause");
return 0;
}