• strcpy strcat strcmp memcpy函数的自己实现


    #include <iostream>
    #include <assert.h>
    using namespace std;

    char* m_strcpy(char* dst, const char* src)
    {
    assert((dst != NULL) && (src != NULL));
    if (dst == src)
    {
    return dst;
    }
    char* ret = dst;
    int size = strlen(src) + 1;
    int len = size;
    if(dst > src)
    {
    dst = dst + size - 1;
    src = src + size - 1;
    while(size--)
    {
    *dst-- = *src--;
    }
    }
    else
    {
    while(size--)
    {
    *dst++ = *src++;
    }
    }
    return ret;
    }
    char* m_strcat(char* dst, const char* src)
    {
    assert(dst);
    assert(src);
    char* ret = dst;
    while(*dst != '')
    ++dst;
    int size = strlen(src) + 1;
    while (size--)
    {
    *dst++ = *src++;
    }
    return ret;
    }
    void* m_memcpy(void* dst, const char* src, int count)
    {
    assert(dst);
    assert(src);
    if (dst == src)
    {
    return dst;
    }
    void* ret = dst;
    char* pdst = (char*)dst;
    char* psrc = (char*)src;
    if (pdst > psrc && pdst < psrc + count)
    {
    pdst = pdst + count -1;
    psrc = psrc + count -1;
    while (count--)
    {
    *pdst-- = *psrc--;
    }
    }
    else
    {
    while (count--)
    {
    *pdst++ = *psrc++;
    }
    }
    return ret;
    }
    int m_strcmp(const char* str1, const char* str2)
    {
    while (*str1 == *str2 && *str1 != '' && *str2 != '')
    {
    str1++;
    str2++;
    }
    return *str1 - *str2;
    }

    int main ()
    {
    char dst[100] = "hello world";
    char *src = "world";
    char* ret = (char*)m_memcpy(dst+2, dst, 5);
    char* str1 = "abc";
    char* str2 = "abcd";
    int n = m_strcmp(str2, str1);
    system("pause");
    return 0;
    }

  • 相关阅读:
    移动端必备rem布局
    个人工作经历、近些日来一些面试总结
    JavaScript面向对象核心知识归纳
    微信开发工具下载地址
    每天运动步数周月切换显示
    爬虫-requests
    django请求生命周期,FBV和CBV,ORM拾遗,Git
    Django + Uwsgi + Nginx 的生产环境部署
    沈阳润才教育CRM
    网络编程
  • 原文地址:https://www.cnblogs.com/mengjuanjuan/p/10455988.html
Copyright © 2020-2023  润新知