特别说明:由于vs2008中assert后面不能定义变量,所以将变量定义在了assert前面!!!
一:编程思想
1.利用数组传参时发生降维的特点将数组首元素的地址赋给指针变量。
2.利用指针将原数组中的字符复制到目标串中。
3.最重要的是要将原数组中的 ‘\0’ 复制到目标串中,已达到结束复制的目的。
二:代码如下
#include<stdio.h>
#include<assert.h>
void my_strcpy (char *arr2,const char *arr1)
{
const char* ret=arr1;
char* dst=arr2;
assert(arr2); //检查指针的正确性
assert(arr1);
while(*ret)
{
*dst=*ret; //将arr1[ ]中的字符复制到arr2[ ]中
dst++;
ret++;
}
*dst=*ret; //将'\0'赋给目标字符串
printf("%s\n",arr2);
}
int main( )
{
const char arr1[ ]="I am a good boy!";
char arr2[32];
my_strcpy(arr2,arr1);
return 0;
}
三:监视结果
可以看到两数组的监视结果相同,说明已将原数组中的字符复制到目标串中。