void my_strcpy(char* arr1, char* arr2){
while (*arr2 != '\0'){
*arr1 = *arr2; //把*arr2指向的第一个元素给*arr2指向的第一个元素
*arr1++;
*arr2++;
}
*arr1 = *arr2;//里面循环遇到'\0'就停了,所以在外面把'\0'再赋給*arr1;
}
int main(){
char arr1[] = "*************";
char arr2[] = "chaoge";
my_strcpy(arr1, arr2);//模拟实现字符串拷贝函数,字符串拷贝函数是把'\0'也考进去的
printf("%s", arr1);
return 0;
}
满分版
#include<assert.h>
//加const因为*src指向的内容不能改变
char* my_strcpy(char* dest, const char* src){
assert(dest != NULL);//断言,测试是不是null是报错
assert(src != NULL);//目的操作数和源操作数都不等于空指针
//strcpy是有返回值的,返回目的操作数的地址;
char* ret = dest; //因为下面程序把dest改变了,所以dest先存ret
while (*dest++ = *src++){
;
}
return ret;
}
int main(){
char arr1[] = "*************";
char arr2[] = "chaoge";
my_strcpy(arr1,arr2);
//返回来相当于数组首地址
printf("%s", my_strcpy(arr1, arr2));
return 0;
}