一)strlen()函数的源代码
size_t __cdecl strlen (const char * str)
{
const char *eos = str;
while( *eos++ ) ;
return( eos - str - 1 );
}
二)传说常见的一个笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数。
函数接口声明如下:
int strlen (const char *p);
①实现方法一:
/* 不用中间变量,用递归实现,很容易看懂 */
int strlen(const char *str)
{
if ('\0' == *str)
return 0;
else
return strlen(str+1) + 1;
}
②实现方法二:
/* 不用中间变量,也是用递归实现,写得更简洁而已 */
int strlen(const char *str)
{
return *str?(strlen(++str) + 1) : 0;
}