c语言字符串处理函数模拟实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36391130/article/details/82021267
int fl_strlen_1(const char* str)
{
    int count = 0;
    while (*str != '\0')
    {
        count++;
        str++;
    }   
    return count;
}
int fl_strlen_2(const char* str)
{
    if (*str == '\0')
        return 0;
    else
        return 1 + fl_strlen_2(++str);
}
int fl_strlen_3(char* str)
{
    char* behind = str;
    while (*behind!='\0')
        behind++;
    return behind - str;
}
char* fl_strcpy(char* dest, const char* src)
{
    char* ret = dest;
    assert(dest || src);
    while ((*dest++ = *src++));
    return ret;
}
char* fl_strcat(char* dest, const char* src)
{
    assert(dest);
    assert(src);

    char* pd = dest;
    while (*pd)pd++;
    while (*pd++ = *src++);
    return dest;
}
char* fl_strstr(const char* bsstr,const char* substr)
{
    assert(bsstr);
    assert(substr);

    while (*bsstr)
    {
        if (*bsstr == *substr)
        {
            char* our = (char*)bsstr+1;
            const char* inr = substr+1;
            while (*our++ == *inr++)
            {
                if (*inr == '\0')
                    return (char*)bsstr;
            }
        }
        bsstr++;
    }
    return NULL;
}
int fl_strcmp(const char* str1,const char* str2)
{
    assert(str1);
    assert(str2);
    while (*str1 == *str2 )
    {
        ++str1, ++str2;
        if (*str1 == '\0')
            return 0;
    }
    return *str1 - *str2;
}
void fl_memcpy(void* dest,void* src,size_t n)
{
    assert(dest);
    assert(src);

    while (n--)
    {
        if ((*(char*)dest = *(char*)src) == '\0')
            return;
        ((char*)dest)++;
        ((char*)src)++;
    }
}
void fl_memmove(void* dest, void* src,size_t n)
{
    assert(dest);
    assert(src);
    if (dest == src || n<1)
        return;

    char* pd = (char*)dest;
    char* ps = (char*)src;
    if (ps + n > pd)
    {
        while (n--)
        {
            *(pd+n) = *(ps+n);
        }
    }
    else
    {
        while (n--)
        {
            *pd = *ps;
            ps++, pd++;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36391130/article/details/82021267