其实关于库函数strlen的源代码,搞清楚原理,就可以很容易自己写一个库函数方法。
strlen:
size_t strlen ( const char * str );
- 字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。
- 参数指向的字符串必须要以 '\0' 结束。
- 注意函数的返回值为size_t,是无符号的( 易错 )
下面是我用三种方法模拟实现的strlen方法:
1.使用临时变量计数器
int my_strlen1(char* str) {
int count = 0;
while (*str)
{
count++;
str++;
}
return str;
}
2.使用递归
int my_strlen2(char* str) {
if (*str == '\0') {
return 0;
}
else {
return my_strlen2(str+1) + 1;
}
}
3.使用指针-指针
int my_strlen3(char* str) {
//首元素的位置
char* first = str;
while (*str)
{
str++;
}
return str - first;
}