源自CSDN:http://bbs.csdn.net/topics/370070922
第一种:用递归的方法
//实现一:(if_else)
int my_strlen( char *str )
{
if( *str == '\0' ){
return 0;
} else {
return my_strlen( ++str ) + 1;
}
}
//实现二:(三目运算)
int my_strlen( char *str )
{
return *str == '\0' ? 0 : my_strlen(++str) + 1;
}
//实现三:
//当字符为空串时,必须判断是否为NULL,如果为空串则返回0
int my_strlen( char *str )
{
if( *str == NULL ){
return 0;
}else if( *str == '\0' ){
return 0;
} else {
return my_strlen( ++str ) + 1;
}
}
第二种:
利用字符串的末地址减去字符串的首地址所得到的值便是字符串的大小
#include<stdio.h>
int mstrlen(char *p)
{
return p-ToEnd(p);
}
char * ToEnd(char * p)
{
while(*p != '\0')
p++;
return p;
}