strlen函数用法,模拟实现
一、strlen 函数用法
用来求字符串长度,从我们给的地址开始,往后数,直到遇到 '\0' 停止,返回数的个数,不包括
'\0' 返回值类型是无符号整形
char arr[ ]="bvcxz";
printf("%u ",strlen(arr)); 得到 5
int main()
{char arr[] = "bdajkh";char arr_[] = "abcdfrurrh";int n = strlen(arr);int n_ = strlen(arr_);if (strlen(arr) - strlen(arr_) > 0)puts(">");elseputs("<");//结果是>}
因为,strlen返回值类型是无符号整形,相减得到的也是无符号整形,负数-->超级大
二、模拟实现strlen功能
1、计数
unsigned my_strlen_1(const char* p)
{int i = 0;while (*p != '\0'){p++;i++;}return (unsigned)i;}int main()
{char arr[] = "bdajkh";char brr[] = { 'a','b','c' };int n = strlen(arr);int m = strlen(brr);unsigned nn = my_strlen_1(arr);printf("%d %d %u\n", n,m,nn);// 6 随机值//strlen返回值是无符号整形return 0;
}
2、指针-指针
指针-指针 结果是它俩之间元素个数【必须指向的是同一个数组】
unsigned my_strlen_2(const char* p)
{char* begin = p;char* end = NULL;while (*p != '\0'){p++;}end = p;return end - begin;}
3、递归
unsigned my_strlen_3(const char* p)
{if (*p == '\0')return 0;else{p++;return 1 + my_strlen_3(p);}}