-
方式一
char* mystrcpy1(char* dest, const char* src) { //先判断 if (dest == NULL || src == NULL) { return NULL; } if (dest == src) { return dest; } char* pt = dest; while (*src != '\0') { *dest++ = *src++; } *dest = '\0'; return pt; }
-
方式二
char* mystrcpy(char* dest, const char* src) { //源地址最好加const,目标地址不需要加
//先判断
if (dest == NULL || src == NULL) {
return NULL;
}
if (dest == src) {
return dest;
}
//定义一个指针pt 指向拷贝目标的地址
char* pt = dest;
while (*dest++ = *src++); //一共需要七步操作
return pt;
}
注意的是:dest的容量至少要大于等于src,否则会拷贝不完整。
方式三 :这种方法,节省了取地址和取值的时间。
char* mystrcpy1(char* dest, const char* src) {
int delta = dest - src;
if (dest == NULL || src == NULL) {
return NULL;
}
if (dest == src) {
return dest;
}
while(*(src+delta) = *src++); //效率提升,省去了dest的取址和取值
return dest;
}