模拟实现strlen的三种方式

一:使用计数器
 

#include<stdio.h>
#include<assert.h>
int my_strlen (const char * str)
{
	int count = 0;
	assert(str != NULL);
	while(* str != '\0')
	{
		count ++;
		str ++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	int ret = 0;
	ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}

二:用指针减指针的方法
 

#include<stdio.h>
#include<assert.h>
int my_strlen (char * str)
{
	 char *p = str;
	assert(str != NULL);
	while(*p != '\0')
	{
		p++;  //p会移动到\0的位置上


	}
	return (p - str);  //   \0 减去字符首元素的地址就是字符串的长度
}
int main()
{
	char arr[] = "abcdef";
	int ret = 0;
	ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}


递归

#include<stdio.h>
#include<assert.h>
int my_strlen (char * str)
{
	assert(str != NULL);
	if(*str == '\0')
		return 0;
	else
		return 1+my_strlen(str +1);
}
int main()
{
	char arr[] = "abcdef";
	int ret = 0;
	ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/daxiongha/article/details/80272397