strlen函数功能是计算字符串中字符的个数.(除\0外)
而字符串本身就是一个字符数组,只不过末尾以\0结束.
因此,我们只需遍历除\0之外的所有字符即可.
有三种方法可以解决这个问题.
方法一:设置一个整型计数器,遍历字符串.
方法二:通过不断函数自身的递归.
方法三:与方法一类似,设置一个char*变量标记字符串尾部,通过指针相减得到字符长度.
#include <stdio.h>
//方法一:通过设置整型计数器,模拟实现strlen函数.
int my_strlen1(const char *str){
assert(str);
int count = 0;
while(*str++){
count++;
}
return count;
}
//方法二:通过递归,模拟实现strlen函数
int my_strlen2(const char *str){
assert(str);
if(*str){
return (1+my_strlen2(str+1));
}
return 0;
}
//方法三:通过char*变量,模拟实现strlen函数
//(库函数中的strlen函数就是这么干的)
int my_strlen3(const char *str){
const char *end = str;
assert(str);
while(*end++){
;
}
return (end-str-1);
}
int main(){
char str[]="abcdef";
printf("str长度是:%d\n",my_strlen1(str));
printf("str长度是:%d\n",my_strlen2(str));
printf("str长度是:%d\n",my_strlen3(str));
return 0;
}
/*
#include <string.h>
size_t strlen(const char *s);
功能:计算字符串长度
参数:
s:字符数组
返值:返回字符串实际长度,不包括‘\0’在内
```c
int my_strlen(const char *s)
{
char * sc;
for (sc = s; *sc != '\0'; ++sc);
return sc - s;
}
```
*/