模拟字符串常见函数(1) strlen函数

2024-01-23 15:16:51 浏览数 (1)

本文将解析常见字符串函数的用法,并通过模拟实现来加深对于它们的理解,以便更好、更灵活的使用它们。

strlen函数

size_t strlen( const char* str)

strlen函数的用法是返回在字符串中‘'前面出现的字符个数(不包含),看函数格式可以知道,它返回的是size_t,是无符号的。通过这个函数可以轻松的知道字符串里的字符个数,下面来模拟实现它。

方法1 计数器法

既然它统计的是前的字符个数,那我们可以从头开始遍历,用一个count变量来保存遍历过的字符,然后返回count就是它的总字符个数了,注意这里是不包含的。

方法2 指针法

通过指针进行计算,我们指针相减的性质(得出两个指针之间的元素个数)来进行,首先需要一个指针dest遍历到字符串的位置,然后再定义一个指针src指向字符串的首元素地址,两者相减,就能得出该字符串的元素个数。 

方法3 递归法

通过递归也能统计它们的字符个数,首先我们要明白,遍历整个字符串时,当它遇到就会停止,这就是递归函数的出口,这里str是字符串名,指向的是字符串的首地址,那么每次递归时,我们都让它加1到达下一个字符的位置,然后在加上前一个字符,如此递归下去,最后返回的就是整个字符串的字符个数(不包含)。

代码实现

代码语言:javascript复制
模拟实现strlen
方法1 计数器
int my_strlen(char * str)
{
	int count = 0;
	int i = 0;
	while (str[i])
	{
		count  ;
		i  ;
	}
	return count;
}


int main()
{
	char str[] = "abcdefg";
	int sz = my_strlen(str);
	printf("%d", sz);


	return 0;
}

//方法2 指针法

int my_strlen(char* str)
{
	char* dest = str;
	while (*dest != '')
	{
		dest  ;
	}
	return dest-str;
}

int main()
{
	char str[] = "abcdefg";
	int sz = my_strlen(str);

	printf("%d", sz);


	return 0;
}

//方法3 递归法
int my_strlen(char* str)
{
	if (*str == '')
	{
		return 0;
	}
	return 1   my_strlen(str   1);

}



int main()
{
	char str[] = "abcdefg";
	printf("%d", my_strlen(str));

	return 0;
}

0 人点赞