模拟实现strlen函数
方法一
字符串++
1.用一个while循环,只要字符串没有到’\0’,继续,碰到’\0’,跳出
2.每循环一次,len++(len用来记录长度)
代码
size_t myStrlen(const char *str){
assert(str);
int len = 0;
while (*str){
str++;
len++;
}
const char *start = str;
const char *end = str;
return len;
}
int main()
{
const char*str = "hello world";
cout << myStrlen(str);
return 0;
}
方法二
双指针
这里用到的一个技巧是:两个指针相减返回的是两指针之间的元素个数
代码
size_t myStrlen(const char *str){
assert(str);
const char *start = str;
const char *end = str;
while (*end){
end++;
}
return end-start;
}
int main()
{
const char*str = "hello world";
cout << myStrlen(str);
return 0;
}
方法三
递归
例如求“abcdef"字符串的长度,可以转化成求1+”bcdef"的长度,递归出口是’\0’
代码
size_t myStrlen(const char *str){
assert(str);
if (*str == '\0'){
return 0;
}
return 1 + myStrlen(str + 1);
}
int main()
{
const char*str = "hello world";
cout << myStrlen(str);
return 0;
}