模拟实现C语言--strlen函数

模拟实现C语言–strlen函数

  • 模拟实现C语言--strlen函数
  • 一、strlen函数是什么?
  • 二、strlen函数的模拟实现
    • 2.1 计数器方式实现strlen函数
    • 2.2 不创建临时变量计数器方式实现strlen函数
    • 2.3 指针-指针方式实现strlen函数
  • 三、strlen函数的返回类型


一、strlen函数是什么?

strlen函数是用于计算字符串长度的库函数

size_t strlen ( const char * str );

模拟实现C语言--strlen函数_第1张图片

  1. 字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。
  2. 参数指向的字符串必须要以 ‘\0’ 结束。
  3. 注意函数的返回值为size_t,是无符号的( 易错 )

二、strlen函数的模拟实现

2.1 计数器方式实现strlen函数

#include
#include
int my_strlen(const char * str)
{
	assert(str != NULL);
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d\n", len);
}

模拟实现C语言--strlen函数_第2张图片

2.2 不创建临时变量计数器方式实现strlen函数

#include
#include
int my_strlen(const char * str)
{
	assert(str != NULL);
	
	while (*str == '\0')
	{
		return 0;
	}
	return 1 + my_strlen(str + 1);
}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d\n", len);
}

2.3 指针-指针方式实现strlen函数

#include
#include
int my_strlen(char* str)
{
	assert(str != NULL);
	char* strat = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - strat;
}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d\n", len);
}

三、strlen函数的返回类型

size_t strlen ( const char * str );

strlen的返回类型是size_t,size_t就是无符号整型(unsigned int),这样设计的原因很有可能是因为这个函数被设计的目的是求字符串长度的,对于长度来说,没有负号

你可能感兴趣的:(C语言,c语言,开发语言)