问题描述
模拟实现strcpy(),strcpy的功能是将源指向的 C 字符串复制到目标指向的数组中,包括终止 null 字符(并在该点处停止)。即字符串的复制粘贴。
问题分析
我们想要模拟实现strcpy()函数,可以从地址的角度入手。
解决方案
我们通过地址解引用赋值,即可实现字符串内容的复制。
代码
//模拟实现strcpy
#include<stdio.h>
#include<assert.h>
char* my_strcpy( char* str2, const char* str1)
{
assert(str2 && str1); //确保两个地址不是空地址
char* ret = str2; //将初始地址保存
while(*str2++ = *str1++) //直接将地址1的内容赋给地址2
{
;
}
return ret; //返回地址2
}
int main()
{
char str1[] = "abcdef";
char str2[20] = {0};
printf("%s\n", str1);
printf("%s\n", my_strcpy(str2, str1));
return 0;
}