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

时间:2022-07-22
本文章向大家介绍c/c++补完计划(二): c字符串复制,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前言

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++) != '');

    return ret;
}

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

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