模拟库函数的实现

1.模拟strlen函数的实现

创造一个函数用递归来计算字符串长度,使用递归的方法进行计算

 

#include<stdio.h>
#include<assert.h>
//模拟strlen
size_t my_strlen( const char* arr)//使用const以保证arr数组内容不被改变
{
	assert(arr);                  //assert来判断arr数组是否为有效数组
	if (*arr == '\0')
		return 0;
	else
		return 1 + my_strlen(arr + 1);//每次arr都加一直到遇见'\0'停止
}
int main()
{
	char arr[] = "abcdefg";
	size_t len = my_strlen(arr);//将arr数组首元素传给my_strlen函数
	printf("%zd", len);
	return 0;
}

2.模拟strcpy函数的实现

这里模拟的strcpy函数形式与库函数strcpy函数的形式一致

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* arr2, const char* arr1)//strcpy函数的返回值为char*类型,模拟一致
{
	char* ret = arr1;                        //创建ret指针指向arr1首元素以便返回时指向首元素
	assert(arr1 && arr2);                    //判断arr1与arr2都为有效数组
	while (*arr2++ = *arr1++)                //将arr1的每一个字符都传给arr2先引用再++处理直到
	{                                        //'\0'='\0'时while循环终止
		;
	}
	return ret;                              //返回ret即arr1中的首元素地址,这与atrcpy函数返回 
                                                一样
}

int main()
{
	char arr1[] = "hello world!";
	char arr2[] = "xxxxxxxxxxxx";
	my_strcpy(arr2, arr1);
	printf("%s", arr2);
	return 0;
}

 

3.模拟strcat函数的实现

strcat函数是一个衔接函数将两个字符串连接起来

#include<stdio.h>
#include<assert.h>
char* my_strcat(char* arr1, const char* arr2)
{
	char* ret = arr1;
	assert(arr1 && arr2);
	do
	{
		arr1++;
	} while (*arr1 != '\0');                 //用do-while循环指向arr1数组的末尾字符
	while (*arr1++ = *arr2++)                //用while循环将arr2数组衔接到arr1数组后面
	{
		;
	}
	return ret;
}

int main()
{
	char arr1[] = { "hello " };
	char arr2[] = { "world!" };
	my_strcat(arr1, arr2);
	printf("%s", arr1);
	return 0;
}

 注意:其中strcpy函数与strcat数组函数形式与库函数中的形式是一样的,都为char*类型返回值都为其首元素的地址,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剴Zzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值