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

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

作者头像
sean_yang
发布2020-07-26 20:08:58
3250
发布2020-07-26 20:08:58
举报
文章被收录于专栏:Sorrower的专栏Sorrower的专栏

前言

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

正文

代码语言:javascript
复制
void strCopy(char *dest, const char *str, int len) {
    if (str == nullptr) {
        return;
    }

    int strLen = strlen(str);
    int minLen = min(strLen, len - 1);

    dest[minLen] = '\0';
    for (int i = 0; i < minLen; ++i) {
        dest[i] = str[i];
    }
}

int main() {
    char *str = "hello, world";
    int len = strlen(str);
    char *ret = (char *) malloc(sizeof(char) * (len + 1));
    memset(ret, 0, sizeof(char) * (len + 1));

    strCopy(ret, str, len + 1);
    cout << ret << endl;
    return 0;
}

首先申请空间应该放权给用户, 不应该内置在函数中. 再者, 用户不一定甚至刚好的空间, 可以考虑让他传入申请空间的长度, 然后通过比对字符串长度和申请空间长度, 选择小的进行字符串复制. 说实话, 我以为的满分答案, 在面试官眼中真的问题百出, 自己还是不断学习.

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

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

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

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

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