前言
c字符串复制的实现, 基本参考strcpy源码.
正文
const char *copyStr(const char *str) {
char *ret = nullptr;
if (str == nullptr) {
return ret;
}
// 获取长度
int len = strlen(str);
// 复制串
ret = (char *) malloc(sizeof(char) * (len + 1));
memset(ret, 0, sizeof(char) * (len + 1));
char *tmp = ret;
while ((*tmp++ = *str++) != '\0');
return ret;
}
int main() {
const char *str = "hello, world";
const char *ret = copyStr(str);
cout << ret << endl;
return 0;
}
不同于strcpy的点在于, 传入只有src串, 没有dest串. 所以实现多了2步, 获取长度和申请空间. 值得一说的就是最后的这个tmp指针, 目的是保留首地址位置, 因为赋值是通过同步移动指针实现的.
网友评论