思路:strlren主要是字符串是以'\0'为结尾标识来计算字符串的长度,所以要实现自己去写strlen也要从这方面下手。
非递归思想:应用循环的思路,以'\0'为循环结束的标识,每循环一次计数加一。
注意:char str [ ] 种类字符串数组作为参数传入函数时会被隐式转换为指针。
1 //非递归: 2 #include3 int Strlen(char* str) 4 { 5 int i = 0; 6 while (*str != '\0') 7 { 8 ++str; 9 ++i;10 }11 return i;12 }13 14 int main()15 {16 char str[] = "abcdefghh";17 printf("%d\n", Strlen(str));18 return 0;19 }
递归思想:每调运一次函数就加一,最后还是以'\0'为结束标志。
1 //递归: 2 #include3 int Strlen(char* str) 4 { 5 if (*str == '\0') 6 { 7 return 0; 8 } 9 else10 {11 return 1 + Strlen(++str);12 }13 }14 15 int main()16 {17 char str[] = "abcdefg";18 printf("%d\n",Strlen(str));19 return 0;20 }