专栏首页Sorrower的专栏c/c++补完计划(二): c字符串复制

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    SeanDepp
  • GPU编程(二): GPU架构了解一下!

    http://html.rhhz.net/tis/html/20150101.htm# http://hustcat.github.io/gpu-archit...

    SeanDepp
  • Android绘制(二):来用Path绘出想要的图形吧!

    之前有一篇用shape进行绘制的, 但是那个偏向静态, path结合属性动画可以动起来哦~ path是什么? 来看看官方的介绍:

    SeanDepp
  • 谷歌发布TensorFlow Lite:移动端+快速+跨平台部署深度学习

    大数据文摘
  • 利用docker部署puppeteer

    puppeteer可以使用Network.emulateNetworkConditions和Emulation.setCPUThrottlingRate轻松地模...

    2014v
  • 写了个监控nginx进程的Python脚本

    菲宇
  • Pandas对行情数据的预处理

    库里是过去抓取的行情数据,间隔6秒,每分钟8-10个数据不等,还有开盘前后的一些数据,用Pandas可以更加优雅地进行处理。 ? 需要把当前时间设置为index...

    用户1075292
  • 【Jmeter篇】抓包导出Jmeter脚本及查看接口响应时间

    1、可通过Rules-Customize Rules用记事本打开,把下面的代码复制到 class Handlers中

    橙子探索测试
  • codeigniter 3.X使用red

    CI3.X自带redis库并且在两个地方使用了这个功能,前提系统安装phpredis 这个PHP扩展

    py3study
  • 沃尔沃和Luminar为自动驾驶汽车打造激光雷达,可识别行人动作

    沃尔沃和自动驾驶汽车传感器公司Luminar在洛杉矶的Automobility LA贸易展上展示了自动驾驶汽车的未来,他们演示了先进的技术,可以帮助汽车检测与人...

    AiTechYun

扫码关注云+社区

领取腾讯云代金券