模拟实现字符串函数

一、Strlen函数(头文件string.h)

1.Strlen函数介绍

模拟实现字符串函数_第1张图片

以上是strlen在MSDN中的用法提示。

Strlen函数用于统计字符串长度(在检测到'\0'时停止,统计数据不包含'\0')

注:笔者经常把strlen与sizeof搞混,strlen作用于字符串,sizeof是操作符,返回一个对象或类型所占的内存字节数)

2.Strlen函数模拟实现

计数器法

#include//Strlen函数模拟实现

int my_Strlen(char* p)
{
	int count = 0;
	while (*p != '\0')
	{
		count++;
		p++;
	}
	return count;
}
int main()
{
	char arr[]="abcdef";
	int ret = my_Strlen(arr);//传入数组首地址,Strlen函数会自动寻找到'\0'
	printf("%d\n", ret);
	return 0;
}

指针法

#include//指针法实现Strlen函数
int my_Strlen(char arr[])
{
	char* left = arr;//注意,类型为char*
	char* right = arr;
	
		while (*right!='\0')//如若right没扫描到'\0',right向后移动
		{
			right++;
		}
	return right-left;//指针减指针返回两个指针之间的元素数目
}
int main()
{
	char arr[] = "abcdef";
	int ret = my_Strlen(arr);
	printf("%d\n", ret);
	return 0;
}

递归方法

#include


int my_Strlen(char *p)
{
	
	if (*p != '\0')
	{
		return 1 + my_Strlen(++p);//
	}
	else return 0;

}

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

二、Strcmp函数(头文件string.h)

1.Strcmp函数介绍

(逐个比较两个字符串元素的大小)

模拟实现字符串函数_第2张图片

Strcmp函数用于比较两个字符串的大小,返回值如下所示

模拟实现字符串函数_第3张图片

2.模拟实现Strcmp函数

#include
int my_Strcmp(char* dest, char* src)
{
	while ((*dest == *src) && (*dest != '\0'))//逐个比较元素
	{
		dest++;
		src++;
	}
	return *dest - *src;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "ffffffff";
	if(my_Strcmp(arr1, arr2) > 0)
	{
		printf("arr1比arr2大\n");
	}
	if(my_Strcmp(arr1, arr2) < 0)
	{
		printf("arr1比arr2小\n");
	}
	if(my_Strcmp(arr1, arr2) == 0)
	{
		printf("arr1与arr2大小相等\n");
	}
	return 0;
}

 

今晚就到这里啦,明天会继续更新库函数的模拟实现,大家晚安。

你可能感兴趣的:(我的大学生活,c语言)