C关于字符串操作的库函数实现总结

Posted evenleee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C关于字符串操作的库函数实现总结相关的知识,希望对你有一定的参考价值。

常用C关于字符串操作的库函数实现:

//获取字符串长度
int Strlen(const char* s) {
    assert(s != NULL);
    int len = 0;
    while (*s++ != ) {
        len++;
    }
    return len;
}

//将src字符串复制到dest中
char* Strcpy(char* dest, const char* src) {
    assert(dest != NULL && src != NULL);
    char* p = dest;
    while ((*dest++ = *src++) != );
    return dest;
}

//将src字符串前n个字符复制到dest中
char* Strncpy(char* dest, const char* src, int n) {
    assert(dest != NULL && src != NULL);
    char* p = dest;
    int m = 0;
    while (*p++ != ) {
        m++;
    }
    if (n > m)
        return NULL;

    p = dest;
    while (n--) {
        *p++ = *src++;
    }
    return dest;
}

//比较两个字符串大小
int Strcmp(const char* str1, const char* str2) {
    assert(str1 != NULL && str2 != NULL);
    while (*str1 && *str2 && *str1 == *str2) {
        str1++;
        str2++;
    }
    return *str1 - *str2;
}

//将src字符串连接到dest字符串后面
char* Strcat(char* dest, const char* src) {
    assert(dest != NULL && src != NULL);
    char* p = dest;
    while (*p++ != );
    p--;
    while ((*p++ = *src++) != );
    return dest;
}


/*
* memcpy函数用于资源内存(src指向的内存)拷贝到目标内存(dest指向的内存);拷贝的个数size
* 用法::(1)可以拷贝任何类型的对象,因为函数的参数类型是void* ,由于函数拷贝是一个字节一个
* 字节拷贝,实际操作是将void*强制转换成了char*,这样才能保证每一次加一个指针
*/
void Memset(char* dest, const char* src, size_t n) {
    assert(dest != NULL && src != NULL);
    char* pDest = (char*)dest;
    const char *pSrc = (const char*)src;
    if (pDest <= pSrc || pSrc + n <= pDest) {
        while (n--) {
            *pDest++ = *pSrc++;
        }
    } else {
        pDest += n - 1;
        pSrc += n - 1;
        while (n--) {
            *pDest-- = *pSrc--;
        }
    }
}

//memset内部实现memset(void*s,int ch,size_t n)
/*将dest所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值,返回s*/
void* Memset(void* dest, int ch, size_t n) {
    assert(dest != NULL && n >= 0);
    char* p = (char*)dest;
    while (n--) {
        *p++ = (char)ch;
    }
    return dest;
}

 

以上是关于C关于字符串操作的库函数实现总结的主要内容,如果未能解决你的问题,请参考以下文章

关于代码片段的时间复杂度

C语言进阶—— 字符操作函数+内存操作函数详解 (吐血爆肝 !!!)

C语言中对字符串进行操作的标准库函数都有哪些

C语言中的库函数定义在啥地方啊?

C语言库函数里有线性表基本操作函数吗?

C语言中实现字符串的拼接