一步一步学编程之字符串处理函数(二)

来源:互联网 发布:jas37战斗机 知乎 编辑:程序博客网 时间:2024/05/22 01:28
函数:memset
功能:设置字符串前n个字符为v
输入:字符串数组或指针、要改为的字符、改多少个
输出:更改后的字符串指针

说明:

void *_memset(const void *s, char v, size_t n)
{
char *ptmp = s;
if (n > strlen(s))
return NULL;
while (n--)
{
*ptmp = v;
ptmp++;
}
return s;
}


函数:memchr
功能:在字符串的前n个字符中寻找c,找到返回指向这个字符的指针
输入:字符串数组或指针、要寻找的字符、前多少个
输出:匹配的字符指针

说明:

void * _memchr(const void * buf, char c , size_t n)
{

        const unsigned char *p = buf;
        int len = strlen(buf);
        while ((n-- != 0 ) && (len--!= 1))
        {
             if ((unsigned char)c == *p++) 
            {
                 return (void *)(p-1);
             }
        }
        return NULL;
}

函数:memcmp
功能:比较两个字符串前n个字符是否相同
输入:两个字符串数组或指针
输出:相同返回0,前面的大返回1,后面的大返回-1

说明:

int _memcmp(const void *str1, const void *str2, size_t n)
{
        const char   *buf1, *buf2;
        buf1 = str1;
        buf2 = str2;
        if (n == 0 && n > strlen(str1) && n > strlen(str2))
        {
            printf("The n is not right number!\n");
            return 2;
        }
        while (n--)
        {
            if(*buf1 == *buf2)
            {
                if (n == 0)
                    return 0;
             }
             else if ((*buf1) > (*buf2))
                    return 1;
             else if (*buf1 < *buf2)
                    return -1;
              buf1++;
              buf2++;
        }
}

函数:memcpy
功能:把字符串str2中的前n个字符拷贝到str1中
输入:两个字符串数组或指针
输出:返回修改后的字符串指针

说明:

void *_memcpy(char *str1, const char *str2, size_t n)
{
    char *buf1 = str1;
    const char *buf2 = str2;
    int len;
    len = strlen(str2);


    if(n == 0 && n > len)
        return NULL;
    while (n--)
    {
        *buf1 = *buf2;
        buf1++;
        buf2++;
    }
    return str1;
}

函数:_strrev
功能:字符串的反转
输入:字符串数组或指针
输出:返回修改后的字符串指针

说明:


char * _strrev(char *str)
{
char *head = str;
char *tail = str;
char ptmp;
int len = strlen(str);

while (--len)
{
tail++;
}
while (head < tail)
{
ptmp = *head;
*head = *tail;
*tail = ptmp;
head++;
tail--;
}

return str;
}

原创粉丝点击