strcpy 覆盖拷贝
-
被拷贝的字符串必须以’\0’结束。
-
目标空间要足够大,至少要能放的下拷贝的东西。
-
目标空间的值是可以修改,比如常量区的字符串,不能够修改,就不能使用。
-
会将被拷贝的字符串中的’\0’拷贝到目标空间。
-
函数实现。
方法一char* my_strcpy(char* dst, const char* src) { const ret = dst; while (*src) { *dst = *src; dst++; src++; } *dst = '\0'; return ret; }
ret记录字符串的首地址,将函数的返回值设置成为一个char*,是为了在调用函数的时候可以像my_strcpy(str1, my_strcpy(str1, p1));这样嵌套,由于strcpy拷贝是拷贝’\0’的,因此在最后,我们需要吧*dst最后所指向的内容改为’\0’。
方法二char* my_strcpy(char* dst, const char* src) { const ret = dst; //先赋值,再判断,只要不是\0,代码就继续 while (*dst++ = *src++); return ret; }
方法二就相对方法一进行了简化,采用前置++的方式,前置++的优先级高于*,因此没循环一次,指针向后移一下,再将src的值赋给dst。