strcat加入异常处理的实现

在末尾追加字符的时候进行了判断,加了两个循环,效果不太好,可能略显繁琐,失去性能

主要需要注意:

1,检查指针有效性;

2,返回目的指针des;

3,源字符串的末尾 '\0' 需要拷贝

4,如果是在同一块内存中的字符串,则不进行追加拷贝。

char *my_strcat_s(char *cDestStr,const char *cSrcStr,int DestLen)
{
    assert(cDestStr != NULL &&cSrcStr != NULL);
    char *cTmp = cDestStr,*cDst = cDestStr;
    int n = 0;
    while (cTmp++ != cSrcStr && *cTmp != '\0');//如果两个指针指向同一个字符串内存,返回dest

    if (*cTmp != '\0')
    {
        return NULL;
    }
    cTmp = cDestStr;
    int nDstCount = 0,nSrcCount = 0;
    while (*cTmp != '\0')
    {
        *cTmp++;
        nDstCount++;
    }
    int nUsable = DestLen - nDstCount - 1;
    const char *cSrc = cSrcStr;
    int nSrc = 0;
    while (*cSrc++ != '\0')
    {
        nSrc++;
    }
    if (nUsable < nSrc)
    {
        return NULL;
    }
    while ((*cTmp++ = *cSrcStr++) != '\0');
    *cTmp = '\0';
    return cDst;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值