strlen的三种写法

strlen的三种写法

函数声明部分,完整代码见文末

第一种:常规法(地址/指针)计数器法


int my_strlen1(char* str)//常规法:计数器法
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

第二种:递归法


int my_strlen2(char* str)//递归法
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen2(str + 1);
}

第三种:地址-地址法


int my_strlen3(char* str)//地址-地址法
{
	char* p = str;//将首元素的地址赋给p
	while (*p != '\0')
	{
		p++;
	}
	return p - str;
}

程序完整代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int my_strlen1(char* str)//常规法:地址的计数器法
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

int my_strlen2(char* str)//递归法
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen2(str + 1);
}

int my_strlen3(char* str)//地址-地址法
{
	char* p = str;//将首元素的地址赋给p
	while (*p != '\0')
	{
		p++;
	}
	return p - str;
}
int main()
{
	char arr[] = "abcdef";
	int ret1 = my_strlen1(arr);
	int ret2 = my_strlen2(arr);
	int ret3 = my_strlen3(arr);

	printf("%d\n", ret1);
	printf("%d\n", ret2);
	printf("%d\n", ret3);

	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/PNUHC/article/details/89462411