博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
阅读量:4691 次
发布时间:2019-06-09

本文共 1412 字,大约阅读时间需要 4 分钟。

字节拷贝函数:
void * memcpy1(void *dest, const void *src, size_t n)
{
        assert(dest!=NULL&&src!=NULL);    //有效性检测
        if(dest == src)
                return dest;
        else if(dest < src)
        {
                const char *c_src = static_cast<const char *>(src);
                char *c_dest = static_cast<char *>(dest);
                while (n--) *c_dest++ = *c_src++;
        }
        else
        {
                const char *c_src = static_cast<const char *>(src) + n - 1;
                char *c_dest = static_cast<char *>(dest) + n - 1;
                while (n--) *c_dest-- = *c_src--;
        }
        return dest;
}
字符串比较函数:
char *strcpy(char *des, const char *src)  
{  
    assert(des != NULL && src != NULL);  
    char *pStr = des;  

    while( (*des++ = *src++) != '\0');  

    return pStr;  

}  

字符串比较函数:
int  strcmp(const char *des,  const char *src)  
{  
    assert(des != NULL && src != NULL);  

    for (;*des && *src && *des == *src; des++, src++);  

    return *des - *src;  

}  

字符串长度函数:
int strlen(const char *pStr)  
{  
    assert(pStr != NULL);  
    int len = 0;  
    while (*pStr++ != '\0')  
        len++;  
  
    return len;  

}  

字符串连接函数:
char *strcat(char *des, const char *src)  
{  
    assert(*des != NULL && *src != NULL);  
    char *pStr = des;  
    while (*des != '\0')  
        des++;  
  

    while ((*des++ = *src++) != '\0'); 

 

    return pStr;  

}

字符串查找函数:
char *myStrstr(const char *des, const char *src)  
{  
    assert(des != NULL && src != NULL);  
  
    char *d = des;  
    char *s = src;  
  
    for (; d != '\0'; des++)  
    {  
        for (d = des, s = src; (s != '\0') && (*d == *s); d++, s++)  
            NULL;  
      
    if (*s == '\0')  
        return des;  
    }  
      
    return NULL;  
  
}  

转载于:https://www.cnblogs.com/llinzuxin/archive/2012/10/23/2950477.html

你可能感兴趣的文章
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>
MySQL 网络访问连接
查看>>
在aws ec2上使用root用户登录
查看>>
数据访问 投票习题
查看>>
CIO知识储备
查看>>
cnblog!i'm coming!
查看>>
使用点符号代替溢出的文本
查看>>
Axios 中文说明
查看>>
fatal: remote origin already exists.
查看>>