模拟实现strlen
方法一:创建一个变量count计数
tips:这种方法比较常见,也容易想到,值得注意的是:在循环里面前置加加和后置加加不要写错。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
int my_strlen(const char* str)
{
assert(str != NULL);
int count = 0;
while (*str)
{
count++;
*str++;
}
return count;
}
int main()
{
char a[] = "aaabbbccc";
printf("%d", my_strlen(a));
system("pause");
return 0;
}
方法二:递归求长度
tips:这种方法简单易懂,比较干脆短短的几行就ok啦。
但是在递归的时候要注意里面的参数 “str+1” 代表的是指针加1
千万不可以写成“ *(str+1)”;
int my_strlen(char* str)
{
assert(str != NULL);
if (*str == '\0')
{
return 0;//遇到‘\0’则返回0
}
else
{
return 1 + my_strlen(str + 1);
//前一个1代表的是已经计算过的
//后一个1代表的是指针加1
}
}
方法三:指针相减计算字符串的长度
tips:定义两个指针,一个指向首元素,一个指向尾元素;
然后两个指针相减就是字符串的长度。
int my_strlen(char* str)
{
assert(str != NULL);
char* p1 = str;
char* p2 = str;
while (*p2 != '\0')
{
*p2++;
}
int n = p2 - p1;
return n;
}
大家如果还有其他的方法欢迎留言讨论~