模拟实现strlen,求字符串长度(方法一)
识别字符串中的每个字符,如果不是’\0’,计数器count++,直到找到’\0’为止,返回计数器coun的值
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str != NULL);//断言str不是空指针
int count = 0;//计数器
while (*str != '\0')
{
count++;//每识别一个不是'\0'的字符,计数器+1
str++;//指向下一个字符的地址
}
return count;//返回计数器的值
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
模拟实现strlen,求字符串长度(方法二)
递归方法实现
my_strlen(“abcdef”)->
1+ my_strlen(“bcdef”)->
1+1+my_strlen(“cdef”)->
1+1+1+my_strlen(“def”)->
1+1+1+1+my_strlen(“ef”)->
1+1+1+1+1+my_strlen(“f”)->
1+1+1+1+1+1+my_strlen(" ")->
1+1+1+1+1+1+0
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str != NULL);
if (*str != '\0')
return 1 + my_strlen(str + 1);//不断递归调用,直到*str= '\0’
else
return 0;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
模拟实现strlen,求字符串长度(方法三)
指针-指针,得到元素个数
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str != NULL);
const char* start = str;//start指向元素地址
while (*str != '\0')
{
str++;
}
return str - start;//str指向'\0'的地址
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}