c/c++补完计划(二): c字符串复制

2020-07-21 14:56:36 浏览数 (1)

前言

c字符串复制的实现, 基本参考strcpy源码.

正文

代码语言:javascript复制
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  ) != '');

    return ret;
}

int main() {
    const char *str = "hello, world";
    const char *ret = copyStr(str);
    cout << ret << endl;
    return 0;
}

不同于strcpy的点在于, 传入只有src串, 没有dest串. 所以实现多了2步, 获取长度和申请空间. 值得一说的就是最后的这个tmp指针, 目的是保留首地址位置, 因为赋值是通过同步移动指针实现的.

0 人点赞