模拟实现库函数:strcpy

举报
念君思宁 发表于 2023/02/15 14:24:02 2023/02/15
【摘要】 模拟实现库函数: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()的实现已经到此为止!

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。