zoukankan      html  css  js  c++  java
  • C/C++ 知识点---字符串函数

    1.strcpy字符串拷贝
    2.strcmp字符串比较
    3.strstr字符串查找
    4.strDelChar字符串删除字符
    5.strrev字符串反序
    6.memmove拷贝内存块
    7.strlen字符串长度

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

    char *strcpy(char *pStrDest, const char *pStrSource)
    {
        assert(NULL!=pStrDest && NULL!=pStrSource);
        char *strTemp=pStrDest;
        while ((*pStrDest++ = *pStrSource++) != '');
    
        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!=''; ++pStrSource)
        {
            for (strTempSource=pStrSource,strTempSearch=pStrSearch;
            *strTempSearch!='' && *strTempSearch==*strTempSource;
            ++strTempSource, ++strTempSearch);
    
            if (*strTempSearch == '')
            {
                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 = '';
    
        return pStrSource;
    }

    5.strrev字符串反序

    char *strrev(char *pStrSource)
    {
        assert (NULL != pStrSource);
    
        char *pStrStart, *pStrEnd;
        pStrStart = pStrEnd = pStrSource;
        while (*pStrEnd != '')
        {
            ++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++ != '')
        {
            ++iLen;
        }
    
        return iLen;
    }
  • 相关阅读:
    顺流交易中,母公司销售部分存货,为什么收入也是全额抵消?
    借:递延所得税资产(负债)贷:所得税费用
    可变回报与固定回报
    或有对价
    可以税前扣除什么意思
    应收账款保理为什么是筹资活动
    外币报表折算差额计入其他综合收益
    分配现金股利为什么是筹资
    spring的@EnableAspectJAutoproxy注解
    Spring的@DeclareParents注解
  • 原文地址:https://www.cnblogs.com/sz-leez/p/4531507.html
Copyright © 2011-2022 走看看