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

函数: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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值