我们都知道 strcpy() 函数是字符串拷贝函数,那么我们怎样来模拟实现这个函数呢?!
首先,我们要明白,strcpy() 在拷贝字符串的时候是一个一个拷贝的,直到遇到字符串结束标志 '\0' 时才停止拷贝。所以,明白了这一点,我们就可一进行简单的模拟实现了
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strcpy(char *str1, const char *str2)
{
assert(str1);
assert(str2);
while(*str1 != '\0') //目标地址遇到'\0'结束
{
*str1 = *str2;
str1++;
str2++;
}
//while(*str2 != '\0') //注意判断条件一定不能这样写
//{
// *str1 = *str2;
// str1++;
// str2++;
//}
return str1;
}
int main()
{
char str[10]; //目标地址一定要是一个字符数组
char *pa = "abcdef";
my_strcpy(str,pa);
printf("%s\n",str);
system("pause");
return 0;
}
关于 my_strcpy() 函数模拟实现的几点要求:
1.拷贝时是连同字符串中的 '\0' 一块拷贝的;
2.函数实参的设定:原字符串前要加 const 保护;
3.函数的返回值类型要是 char* 类型(便于链式访问);
4.进入函数内部,要对两个指针进行断言,判断指针是否为空;
5.函数要返回一个值(地址);
6.一定要进行优化
最优化代码:
char *my_strcpy(char *str1, const char *str2)
{
assert(str1);
assert(str2);
while(*str1++ = *str2++)
{
;
}
return str1;
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。