前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c/c++补完计划(二): c字符串复制

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

作者头像
sean_yang
发布2020-07-21 14:56:36
3190
发布2020-07-21 14:56:36
举报
文章被收录于专栏:Sorrower的专栏Sorrower的专栏

前言

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档