码迷,mamicode.com
首页 > 其他好文 > 详细

字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)

时间:2018-04-13 22:30:26      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:arc   count   删除   sea   trend   ons   void   技术   iss   

1.strcpy字符串拷贝
拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外)

技术分享图片
char *strcpy(char *pStrDest, const char *pStrSource)
{
    assert(NULL!=pStrDest && NULL!=pStrSource);
    char *strTemp=pStrDest;
    while ((*pStrDest++ = *pStrSource++) != ‘\0‘);

    return strTemp;
}
技术分享图片

2.strcmp字符串比较

技术分享图片
int strcmp(const char *pStrA, const char *pStrB)
{
    assert(NULL!=pStrA && NULL!=pStrB);
    while (*pStrA && *pStrB && *pStrA==*pStrB)
    {
        ++pStrA;
        ++pStrB;
    }

    return (pStrA-*pStrB);
}
技术分享图片

3.strstr字符串查找

技术分享图片
char *strstr(const char *pStrSource, const char *pStrSearch)   
{   
    assert(pStrSource != NULL && pStrSearch != NULL); 
    const char *strTempSource = pStrSource;
    const char *strTempSearch = pStrSearch;
    for (; *pStrSource!=‘\0‘; ++pStrSource)
    {
        for (strTempSource=pStrSource,strTempSearch=pStrSearch;
        *strTempSearch!=‘\0‘ && *strTempSearch==*strTempSource;
        ++strTempSource, ++strTempSearch);

        if (*strTempSearch == ‘\0‘)
        {
            return (char *)pStrSource;
        }
    }

    return (char *)NULL; 
} 
技术分享图片

4.strDelChar字符串删除字符

技术分享图片
char *strDelChar(char *pStrSource, const char chDel)
{
    assert(NULL!=pStrSource && !isspace(chDel));
    char *pTempStrA, *pTempStrB;
    pTempStrA = pTempStrB = pStrSource;

    while (*pTempStrB++)
    {
        if (*pTempStrB != chDel)
        {
            *pTempStrA++ = *pTempStrB; 
        }
    }
    *pTempStrA = ‘\0‘;

    return pStrSource;
}
技术分享图片

5.strrev字符串反序

技术分享图片
char *strrev(char *pStrSource)
{
    assert (NULL != pStrSource);

    char *pStrStart, *pStrEnd;
    pStrStart = pStrEnd = pStrSource;
    while (*pStrEnd != ‘\0‘)
    {
        ++pStrEnd;
    }

    char chTemp;
    for (--pStrEnd, pStrStart; pStrEnd<pStrStart; ++pStrStart, --pStrEnd)
    {
        chTemp = *pStrStart;
        *pStrStart = *pStrEnd;
        *pStrEnd = chTemp;
    }

    return pStrSource;
}
技术分享图片

6.memmove拷贝内存块

技术分享图片
void *memmove(void *pStrTo, const void *pStrFrom, size_t count)
{
    assert (NULL!=pStrTo && NULL!=pStrFrom);

    void *pStrRet = pStrTo;

    if (pStrTo<pStrFrom || pStrTo>pStrFrom+count-1)
    {
        //内存块不重叠情况
        while (count--)
        {
            *pStrTo++ = *pStrFrom++;
        }
    }
    else
    {
        //内存块重叠情况
        char *pStrDest = (char *)pStrTo;
        char *pStrSource = (char *)pStrFrom;
        pStrDest = pStrDest+count-1;
        pStrSource = pStrSource+count-1;
        while (count--)
        {
            *pStrDest-- = *pStrSource--;
        }
    }

    return pStrRet;
}
技术分享图片

7.strlen字符串长度

技术分享图片
int strlen(const char *pStrSource)
{
    assert(NULL != pStrSource);
    int iLen = 0;
    while (*pStrSource++ != ‘\0‘)
    {
        ++iLen;
    }

    return iLen;
}
技术分享图片

 

http://www.cnblogs.com/sz-leez/p/4531507.html

字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)

标签:arc   count   删除   sea   trend   ons   void   技术   iss   

原文地址:https://www.cnblogs.com/findumars/p/8824143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!