strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。 模拟实现strlen有以下三种方法:
第一种:创建计数器
int my_strlen(char *str)
{
int count = 0;
while(*str)
{
count++;
str++;
}
return count;
}
第二种:指针减指针
int my_strlen(char *str)
{
const char *end = str;
assert(str != NULL);
while(*end != '\0')
{
end++;
}
return end-str;
}
第三种:不创建临时变量,使用递归函数
int my_strlen(const char *str)
{
if( !*str)
return 0;
else
return 1+my_strlen(str+1);
}
main函数:
int main()
{
char *str = "abcdefgh";
int len = my_strlen(str);
printf("%d\n",len);
return 0;
}