采用递归的方法:
- 用assert宏做入口校验
- 确定参数传递过来的地址上的内存存储的是否为’\0’。如果是,表明这是一个
空字符串,或者是字符串的结束标志- 确定递归停止的条件:当字符串的结束标志符’\0’时,递归停止。
代码如下:
int My_strlen(char *string) {
assert(string != NULL);
if (*string=='\0') {
return 0;
}
else{
return (1 + My_strlen(++string));
}
}
还可以使代码更简洁:
int My_strlen1(char *string) {
assert(string != NULL);
return (*string == '\0' ? 0: (1 + My_strlen(++string)));
}