1. 模拟实现库函数strlen()
先看看库函数是如何实现的
size_t __cdecl strlen ( const char * str)//1.这个size_t就是无符号整形的重命名,因为我们求长度不可能是负数。 2.这里加了const 因为我们不需要修改字符串。
{
const char *eos = str;
while( *eos++ ) ; //这里跳出循环的时候是指向了最后一个字符串eos
return( eos - str - 1 );//3.这里使用的指针相减得到的是两个指针之间的字符串长度
}
3.代码实现
//模拟实现strlen函数
#include<stdio.h>
int myStrlen(char *str )
{
unsigned int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char str[] = "goodafternoon";
int ret = myStrlen(str);
printf("%d", ret);
return 0;
}
4.代码改进
后置++
加const(我们只是计算字符串长度不需要修改)
加assert(防止传入空指针)
//模拟实现strlen函数
#include<stdio.h>
#include<assert.h>
int myStrlen(const char *str )
{
assert(str);
unsigned int count = 0;
while (*str++ != '\0')
{
count++;
}
return count;
}
int main()
{
char str[] = "goodafternoon";
int ret = myStrlen(str);
printf("%d", ret);
return 0;
}
1385

被折叠的 条评论
为什么被折叠?



