strcpy
char* strcpy(char* destrination, const char source);
1.源字符串必须以’\0’结束
2.会将字符串中的‘\0’拷贝到目标空间
3.目标空间必须足够大,以确保能够存放源字符串
4.目标空间必须可变
strcpy函数的分析
#include<stdio.h>
int main() {
char arr1[10] = "abcde";
const char arr2[] = "mf";
strcpy(arr1, arr2);
printf("%s\n", arr1);;
getchar();
return 0;
}
拷贝前:
拷贝后
所以拷贝后再次打印arr1的内容时,就变成了mf.
srrcpy函数的模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest,char* scr) {
char* dest1 = *dest;
assert(dest!= NULL);
assert(scr != NULL);
// 拷贝字符串到目的地址
while (*scr != '\0') {
*dest = *scr;
dest++;
scr++;
}
*dest = *scr;
//返回原目的地址
return dest1;
}
int main() {
char arr1[10] = "abcde";
char arr2[] = "mf";
my_strcpy(arr1,arr2);
printf("%s\n", arr1);
getchar();
return 0;
}
my_strcpy函数优化
char* my_strcpy(char* dest,char* scr) {
char* dest1 = *dest;
assert(dest!= NULL);
assert(scr != NULL);
// 拷贝字符串到目的地址
while (*dest++ = *scr++) {
;
}
//返回原目的地址
return dest1;
}
*dest++ = *scr++:当 *scr 为‘\0’时,将其赋值给 *dest,整个表达式返回值为null;