模拟实现库函数:strcpy

模拟实现库函数:strcpy!

笔者不才!最近斗胆创建了一个名为C语言大家庭的公众号,里面记录了笔者之前的CSDN文章,感兴趣的读者请添加关注哦!

最近刚刚开始起步,急剧寻找合作伙伴!有意者请一步微信公众号私聊

对于库函数,想必大家已经有所了解!但是对于某些误撞进入此篇博客的读者,笔者在此进行简单的介绍!

“strcpy是字符串复制函数,strcpy(a,b)就是将字符串b的内容全部复制到字符串a中,使用这个函数时要注意字符串拥有的空间至少要和b字符串相等,否则会出错。”

笔者所写的简单代码为:

//库函数strcpy的实现情况!
#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[20] = "***************";
	char arr2[] = "hello";
	strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

在这段代码中,形象的诠释了strcpy()库函数的简单应用!

下面是代码的运行结果!

 经过上面的简单讲解,想必大家对于库函数strlen()有着深刻的了解,并且能自我找到规律了!下面请看笔者对于如何用代码来模拟库函数strlen()的实现!

用代码来模拟库函数strlen()的实现!

下面请看笔者的简单代码,然后笔者将会通过代码加解析的方式来带领大家走进神秘的库函数!

//模拟库函数strlen()的实现!
#include <stdio.h>

void my_str(char* arr1, char* arr2)
{
	while (*arr2 != '\0')
	{
		*arr1 = *arr2;
		arr1++;
		arr2++;

	}
	*arr1 = *arr2;  //拷贝‘\0’

}

int main()
{
	char arr1[20] = "****************";
	char arr2[] = "hello";

	my_str(arr1, arr2);

	printf("%s\n", arr1);
	return 0;
}

在上述的代码段中,最为重要的部分还是在于:while()的拷贝循环里面!

对于在main函数中,通过:my_str(arr1, arr2);  将数组  char arr1[20] = "****************";    char arr2[] = "hello";  传递给形参,而数组名是数组首元素地址!对于地址,形参要用指针来接收,,返回类型为:void(空类型)!因此经函数部分定义为:void my_str(char* arr1, char* arr2)!

对于在函数体部分:while ()循环,对于()里面的内容一直循环判断,直到: *arr2 == '\0'     时候,条件不成立,结束while ()循环!

在while ()循环里面:

*arr1 = *arr2;
		arr1++;
		arr2++;

将地址进行解引用操作后,进行赋值运算!从而将*arr2全部赋值给*arr1; 然后在arr1++;   arr2++;

一直到  : *arr2 == '\0'    为止!然后在执行一次:*arr1 = *arr2;  这个的目的主要在于还是要拷贝'\0'  ! 然后才能算术完全实现库函数strlen()的功能!

代码的最后运行结果为:

 对于函数体部分的代码,不同的人有着不同的见解,其实也可以写成:

void my_str(char* arr1, char* arr2)
{
	while (*arr1++ = *arr2++)
	{
		;
	}
}

这样书写代码的最后结果也是一样的!

最后的运转结果为:

 对于上述模拟库函数strlen()的实现已经到此为止!

最后笔者一丢丢小私心!(在文章开头部分)望满足!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

念君思宁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值