C语言strlen函数详解

 2024-03-17 05:02:36  阅读 0

功能详细解释

1. 函数介绍 1. 函数原型

size_t strlen ( const char * str );

2、注意事项

字符串使用'\0'作为结束标志,函数返回字符串中出现在'\0'之前的字符数(不包括'\0');

例子:

#include 
#include 
int main()
{
	char arr[] = "abcdefg";// "abcdefg\0"
	int num = strlen(arr);
	printf("%d\n", num);
	return 0;
}

输出结果:

②参数指向的字符串必须以'\0'结尾;

例如字符串的定义如下: char arr[]={'a','b','c','d',};

输出结果将是一个随机值,因为不知道 '\0' 在此字符数组中的位置。

③函数的返回值是一个无符号数。

这一项是最容易被忽视的,也是一个容易出错的点。

例子:

int main()
{
	const char*str1 = "abcdefg";
	const char*str2 = "cdef";
	if(strlen(str2)-strlen(str1)>0)
	{
		printf("str2>str1\n");
	}
	else
	{
		printf("srt1>str2\n");
	}
	return 0;
}

出现这样结果的原因是:str1的长度为7,str2的长度为4,在if判断条件下,str2的长度减去str1的长度为-3,但是str2的返回值类型函数是无符号类型,因此会被转换为大于0的数字,结果将是str2 > str1。

2. 功能模拟实现 1. 计数器方法

int my_strlen(char* str)
{
	int count = 0;
	while (*str++)
	{
		count++;
	}
	return count;
}

2. 递归实现

int my_strlen(char* str)
{
	if (*str == '\0')
	{
		return 0;
	}
	else
		return my_strlen(str+1) + 1;
}

3. 指针-指针实现

int my_strlen(char* str)
{
	char* s = str;
	while (*s)
	{
		s++;
	}
	return s - str;
}

标签: 字符 函数 长度

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码