模拟实现库函数: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()的实现已经到此为止!
最后笔者一丢丢小私心!(在文章开头部分)望满足!
- 点赞
- 收藏
- 关注作者
评论(0)