strlen函数的功能,从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,返回字符串的实际长度。
注意不包括 '\0' 字符。实现的代码如下。
#include <stdio.h>
unsigned int myStrlen( const char *src )
{
int nLen = 0;
/**
*** count untill *src is '\0'
**/
while ( '\0' != *src++ )
{
nLen++;
}
return nLen;
}
int main()
{
char srcStr1[] = "Today is a good day!";
char srcStr2[] = "Tomorrow will be better!";
printf("The length of srcStr1 is: %d\n", myStrlen( srcStr1 ) );
printf("The length of srcStr2 is: %d\n", myStrlen( srcStr2 ) );
/* will always be true!
if ( myStrlen( srcStr1 ) - myStrlen( srcStr2 ) >= 0 )
{
printf("String srcStr1 is longer.\n");
}
*/
if ( myStrlen( srcStr1 ) >= myStrlen( srcStr2 ) )
{
printf("String srcStr1 is longer.\n");
}
else
{
printf("String srcStr2 is longer.\n");
}
return 0;
}
值得引起注意的是,strlen函数的返回值是size_t型,也就是unsigned int,上面代码注释掉的代码,永远为真,因为两个unsigned int的差始终非负。