模拟使用strlen
定义:size_t strlen ( const char * str );
字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含 ‘\0’ )。
参数指向的字符串必须要以 ‘\0’ 结束。
注意函数的返回值为size_t,是⽆符号的( 易错 )
学会strlen函数的模拟实现
方法一:逐个计数法
size_t my_strlen(const char* str) { int count = 0; assert(str); while(*str)//判断条件如果遇到‘\0’循环截止 { count++;//进行计数 str++; } return count; } int main() { char arr1[] = "abcdef"; int ret = my_strlen(arr1); printf("%d\n",ret); return 0; }
方法二:指针-指针
size_t my_strlen(const char* str) { assert(str); char* tmp = str;//取一个临时变量进行循环 while (*tmp != '\0')//找到‘\0’的位置 { tmp++; } return tmp - str;//指针-指针==两指针之间的元素个数 } int main() { char arr1[] = "abcdef"; int ret = my_strlen(arr1); printf("%d\n",ret); return 0; }
方法三:函数递归
size_t my_strlen(const char* str) { assert(str); if (*str == '\0')//查看数组是否为空,为空返回0 { return 0; } else return 1 + my_strlen(str+1);//只要*str不为\0就一直执行my_strlen(str+1) 每次个数增加1 } int main() { char arr1[] = "abcdef"; int ret = my_strlen(arr1); printf("%d\n",ret); return 0; }