第一种:计数器方法,一开始写的时候,我是最喜欢用这种方法写的,但随着后来的知识面的扩充,感觉这种方法不是很简便。
#include <assert.h> int my_strlen(const char *str) { int count = 0; assert(str != NULL); while (*str != '\0') { count++; str++; } return count; } int main() { int ret = 0; char arr[] = "abcdef"; ret = my_strlen(arr); printf("%d\n", ret); system("pause"); return 0; }
第二种:不能创建临时变量计数器,使用递归方式。
int my_strlen(const char *src) { //a bcdef if (*src == '\0') return 0; else return 1 + my_strlen(src + 1);//src + 1相当于src++ } int main() { char *p = "abcdef"; my_strlen(p); system("pause"); return 0; }
第三种:使用指针-指针的方法,指针-指针得到的是元素个数
int my_strlen(const char* str) { char *p = str; assert(str != NULL); while (*p != '\0') { p++; } return p - str; } int main() { int ret = 0; char arr[] = "1234abcdef"; ret = my_strlen(arr); printf("%d\n", ret); system("pause"); return 0; }