在很多时候,我们会利用库函数strlen来计算字符串的长度,那如何模拟实现字符串长度的计算,接下来一起来看一下。
1.统计法
#include<stdio.h>
#include<assert.h>
int my_strlen(char* pa)
{
assert(pa);
int count=0;
while(*pa++)//当*pa不等于\0时循环
{
count++;//统计字符的个数
}
return count;
}
int main()
{
char arr[20] = "helloworld!";
int ret = my_strlen(arr); //统计字符个数,ret接收my_strlen函数返回值
printf("该字符串有%d个字符",ret);
return 0;
}
2.指针相减法
#include<stdio.h>
#include<assert.h>
int my_strlen(char* pa)
{
char* tmp = pa;//设置一个char类型指针存放pa起始地址
assert(pa);
while(*pa++);//当*pa不等于\0时循环,同时pa向后移动一位
pa--;//因为*pa为\0时自增了一次,所以自减一次
int count = pa-tmp;
return count;
}
int main()
{
char arr[20] = "helloworld!";
int ret = my_strlen(arr); //统计字符个数,ret接收my_strlen函数返回值
printf("该字符串有%d个字符",ret);
return 0;
}
3.递归统计法
#include<stdio.h>
#include<assert.h>
int my_strlen(char* pa)
{
assert(pa);
while(*pa++)
return 1+my_strlen(pa);
}
int main()
{
char arr[20] = "helloworld!";
int ret = my_strlen(arr); //统计字符个数,ret接收my_strlen函数返回值
printf("该字符串有%d个字符",ret);
return 0;
}
如果大家有更多实现方法可以留言,感谢观看