C语言实现strlen的三种方法

本文详细介绍了C语言中strlen函数的使用方法及原理,并通过三种不同的实现方式对比讲解了strlen函数的工作机制,包括计数器法、递归法和指针-指针法。此外还探讨了strlen函数返回值的数据类型及其意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.strlen介绍

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大;所以容易引发歧义与误解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值