strcpy指的是字符串的拷贝,就是把源字符串拷贝到目标空间里面
1、源字符串的拷贝是是以‘\0’结尾的,同时会将字符串中的’\0’拷贝过去
#include<stdio.h>
int main(){char arr1[20]="xxxxxxxxxxxxx";char arr2="hello world";strcpy(arr1,arr2);printf("%s",arr1);return 0;
}
此时这里的arr1会变成是hello world\0x,但是打印出来的arr1是hello world
2、目标空间的字符串必须是可变的,不能是常量字符串
#include<stdio.h>
int main(){char* p="hello world";char arr[]="abcdef";strcpy(p,arr);printf("%s",p);return 0;
}
这里此时是会出错的,因为p指向的常量字符串,所有不能这样写
3、源字符串的空间必须足够大,如果字符串常量不够大,拷贝过去是会出错的
4、模拟实现strcpy
char* my_strcpy(char*dest,const char* str) {assert(dest);assert(str);char* ret = dest;while (*dest++ = *str++) {;}return ret;
}int main() {char arr[10] = { 0 };char* p = "abcdef";my_strcpy(arr, p);printf("%s", arr);return 0;
}