1.用遍历的方法实现。
(1).从首元素开始,遍历这个字符串只有不是'\0'就加一;
#include<stdio.h>
#include<stdlib.h>
int My_strlen(char* arr)
{
int i = 0;
while(*arr)//遍历整个字符串,直到'\0'结束
{
i++;
arr++;
}
return i;
}
int main()
{
char a[] = "asdffs";
int s = My_strlen(a);
printf("%d", s);
system("pause");
return 0;
}
2.用递归实现
(1)用递归的不断调用实现,当找到'\0'时返回0;
#include<stdio.h>
#include<stdlib.h>
int My_strlen(char* arr)
{
if(*arr == '\0')//找到'\0'时结束,返回0;
{
return 0;
}
return 1+My_strlen(arr+1);
}
int main()
{
char a[] = "asdffs";
int s = My_strlen(a);
printf("%d", s);
system("pause");
return 0;
}
3.用指针的方式实现
(1).首先定义一个指针指向首地址,然后找到这个字符串的末尾('\0'),并用指向末尾的指针减去首地址。
因为两个指针之差就是这两个指针之间元素的个数。
#include<stdio.h>
#include<stdlib.h>
int My_strlen(char* arr)
{
char *q = arr;
while(*arr)//找到‘\0’结束
arr++;
return arr - q;
}
int main()
{
char a[] = "asdffs";
int s = My_strlen(a);
printf("%d", s);
system("pause");
return 0;
}