zoukankan      html  css  js  c++  java
  • (C++)考虑内存重叠的strcpy

    注意事项:

    1. 判断输入参数的合法性。

    2. 要有返回的参数

    3. 别忘了复制字符串末尾的'\0'

    4. 如果内存有重叠,则倒着复制

    char* mystrcpy(char* dst, const char* src)
    {
        assert(dst != NULL);
        assert(src != NULL);
    
        if (dst == src)
            return dst;
    
        int size = strlen(src) + 1;
    
        if (dst < src || src + size <= dst)
        {
            char* d = dst;
            const char* s = src;
    
            while (size--)
                *d++ = *s++;
        }
        else
        {
            char* d = dst + size - 1;
            const char* s = src + size - 1;
    
            while (size--)
                *d-- = *s--;
        }
        return dst;
    }
    -------------------------------------------------------

    kedebug

    Department of Computer Science and Engineering,

    Shanghai Jiao Tong University

    E-mail: kedebug0@gmail.com

    GitHub: http://github.com/kedebug

    -------------------------------------------------------

  • 相关阅读:
    从小到大全排列
    众数-摩尔投票法
    链表复制
    2019.8.29刷题统计
    2019.8.28刷题统计
    2019.8.27刷题统计
    2019.8.26
    2019.8.25刷题统计
    2019.8.24
    2019.8.23刷题统计
  • 原文地址:https://www.cnblogs.com/kedebug/p/2829945.html
Copyright © 2011-2022 走看看