美文网首页
c/c++补完计划(二): c字符串复制

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

作者: sean_depp | 来源:发表于2020-07-21 10:37 被阅读0次

    前言

    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指针, 目的是保留首地址位置, 因为赋值是通过同步移动指针实现的.

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/pyzbkktx.html