C語言中常用到的字符串函數

wdey 9年前發布 | 754 次閱讀 C/C++

字節拷貝函數:

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')  
        NULL;  
    return pStr;  
}  


字符串比較函數:
int  strcmp(const char *des,  const char *src)  
{  
    assert(des != NULL && src != NULL);  
    for (;*des && *src && *des == *src; des++, src++)  
        NULL;  
    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')  
        NULL;  
    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;  

}  
 本文由用戶 wdey 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!