strlen函数详解(每天认识一个库函数)

在使用库函数strlen时,我们需要引头文件string.h。

目录

一、使用搜索工具去了解strlen函数

二、需要注意的点

2.1 strlen函数求什么

2.2 参数要求

2.3 注意返回值

三、strlen函数的模拟实现

3.1 方法一

 3.2 方法二

3.3 方法三

 

一、使用搜索工具去了解strlen函数

     在       cplusplus.com - The C++ Resources Network中关于strlen库函数的解释如下:

strlen函数详解(每天认识一个库函数)_第1张图片

      我们可以从关于库函数的介绍中了解许多信息,比如strlen函数的返回类型,需要的传参类型。

60a4a744e132496981d859b7238ecdc9.png

      除此之外我们还可以了解到函数的使用方式与使用场景,使用合适的工具去了解c语言中的库函数是一项必备技能。

     strlen函数是用来求字符串长度的,它求的是'\0'之前的字符个数,使用strlen函数时需要给它传一个地址,可以是字符串的首字符的地址,就可以求出字符串中'\0'之前的字符个数。

二、需要注意的点

2.1 strlen函数求什么

     字符串中'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0'’)。

2.2 参数要求

     给strlen函数传参的时候,我们要注意传的地址指向的字符串必须以'\0'结尾,如果不以'\0'为结束标志,那么strlen函数会不断地找'\0',求得的结果是一个随机值,没有实际意义。

2.3 注意返回值

    strlen函数的返回类型是size_t类型的,即无符号整型。这一点需要尤其注意,容易出错,下面我们来通过一个例子来说明。

#include 
#include 
int main()
{
	char arr1[] = "abcdefg";
	char arr2[] = "adx";
	if ((strlen(arr2) - strlen(arr1)) > 0)
	{
		printf("arr2 > arr1\n");
	}
	else
	{
		printf("arr2 < arr1\n");
	}
	return 0;
}

运行结果是:
strlen函数详解(每天认识一个库函数)_第2张图片

为什么会这样呢?

     strlen函数详解(每天认识一个库函数)_第3张图片 

三、strlen函数的模拟实现

3.1 方法一

#include 

size_t my_strlen(const char* str)
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;

}

 3.2 方法二

    方法二利用的是指针-指针的绝对值是两个指针之间的元素个数。

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

}

3.3 方法三

    方法三是按照递归的方法来写的。

#include 
size_t my_strlen(const char* str)
{
	if (*str == 0)
	{
		return 0;
	}
	else
	{
		return 1 + my_strlen(str + 1);
	}

}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;

}

 

 

你可能感兴趣的:(c++,开发语言,c语言,蓝桥杯)