美文网首页
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字符串复制

    前言 c字符串复制的实现, 基本参考strcpy源码. 正文 不同于strcpy的点在于, 传入只有src串, 没...

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

    前言 c字符串复制的实现, 基本参考strcpy源码.在和百度面试官一番攀谈交心之后, 了解到之前的写法, 会有很...

  • c/c++补完计划(七): 哨兵节点

    前言 解决链表问题, 经常会用一个空的节点进行辅助. 合并两个排序的链表 可以先考虑递归, 新建一个节点, 然后选...

  • c/c++补完计划(三): 素数统计

    前言 统计所有小于非负整数 n 的质数的数量这是一道leetcode简单级别的, 本来没啥说的, 然后我发现了欧拉...

  • c++传递字符串给c#使用问题

    C++里,字符串要占用内存的。C++创建字符串,并传给C#,就会造成内存泄露(因为C#不知道C++如何创建,也就不...

  • C_C++ 字符串数字的转换

    C++ 字符串流 stringstream C++ stream library 中的 stringstream ...

  • C++<第十九篇>:字符串

    C++ 中的字符串有两种形式:(1)C风格的字符串 (2)C++引入的 string 类型的字符串。 (1)C风格...

  • C++面试题-编程

    1、不调用C++/C的字符串库函数,编写strcpy函数 上述strcpy能够把psrc的内容复制给pdest,为...

  • C++ 字符串

    C++ 提供了以下两种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 1、C 风格字...

  • 字符串

    C++提供了两种字符串的表示形式: C风格字符 C++引入的string类型 C风格 函数 C++中的String类

网友评论

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

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