在模拟实现strlen之前我们首先要明白strlen的作用:
1.计算字符串s的(unsigned int)型长度
2.返回s的长度不包括"\0",这里要与sizeof加以区分
实现思路:
1.使用计数器count,每移动一次指针,count++,直到遇到“\0“”停止
2.使用两个指针访问同一块(即该字符串)地址空间,一个指针保持不动,另一个指针不断遍历直到遇到“\0“”停止,两个指针相减的数值就是字符串的大小
3.递归调用自定义函数,每次返回值+1,直到遇到“\0“”停止
具体代码如下(顺序与思路保持一致):
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
//int my_strlen(char *string)
//{
// int count = 0;
// if (string == NULL)
// {
// return 0;
// }
// while (*string != NULL)
// {
// string++;
// count++;
// }
// return count;
//}
int my_strlen(char *string)
{
if (string == NULL)
{
return 0;
}
char *p = string;
while (*p != '\0')
{
++p;
}
return p - string;
}
//int my_strlen(char*string)
//{
// if (string == NULL)
// {
// return 0;
// }
// if (*string == '\0')
// {
// return 0;
// }
// return 1 + my_strlen(string+1);
//}
int main()
{
char arr[] = { "abcdef" };
int count=my_strlen(arr);
printf("%d", count);
system("pause");
return 0;
}