目录
- 1.strlen介绍
 - 2.如何使用strlen库函数
 - 3.三种方法实现strlen 计数器法:
 - 4.关于strlen返回值
 
1.strlen介绍
strlen — 求字符串长度
size_t strlen (const char* str);
找到字符串后的‘\0’为止,不包含‘\0’;
2.如何使用strlen库函数
int len = strlen(“abcdef”);
输出结果:6
char arr[] = { "a" , "b" , "c" , "d" , "e" , "f" };
int len = strlen(arr);
输出结果:随机值
3.三种方法实现strlen 计数器法:
#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)
{
	int count = 0;
	assert(str != NULL);
	while (*str != '\0')//while(*str)
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	int len = my_strlen("abcdef");
	printf("%d\n", len);
	return 0;
}
递归法:
#include<stdio.h>
int my_strlen(char *str)
{
	if (*str != '\0')
	{
		return 1 + my_strlen(str + 1);
	}
	return 0;
}
int main()
{
	char arr[] = { "abcdef" };
	int ret = my_strlen(arr);
	printf("%d\n", ret);
	return 0;
}
指针-指针法:
#include<stdio.h>
int my_strlen(char* str)
{
	char* start = str;
	char* end = str;
	while (*end!='\0')
	{
		end++;
	}
	return end - start;
}
int main()
{
	char arr[] = "bit";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}
4.关于strlen返回值
- strlen库函数的返回值是size_t,其含义是unsigned int,即为无符号数;
 - 我们自己实现库函数strlen的my_strlen的返回值则是int,即为有符号数.
 
返回类型为unsigned int 和 int 各有利弊:1.返回int类型 不容易出现错误 2.返回unsigned int类型 说明字符串的长度是没有负数的

3 – 6 = -3;由于strlen库函数的返回类型是unsigned int,则-3被视为无符号数自然也就比0大;所以容易引发歧义与误解.
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)