memcmp 、memchr实现

  • 内容
    • memcmp、memicmp原型对比
    • memicmp实现
    • memchr实现

  • memcmp
    • 函数原型:extern int memcmp(void *str1, void *str2, unsigned int n)
    • 参数说明:str1和str2为指定作比较的字符串,比较两个字符串的前n个字节。
    • memcmp函数实现的是字节的比较,而不是字符的比较。
  • memicmp
    • 函数原型:extern int memicmp(void *str1, void *str2, unsigned int count)
      *参数说明:str1和str2为指定作比较的字符串,比较两个字符串的前count个字节,不区分大小写。

    • memicmp函数在比较的时候是不区分字母大小写的。


  • memchr

    • 函数原型extern void *memchr(const void *buf, int ch, size_t count)
    • 功能:从buf所指内存区域的前count个字节查找字符ch。
    • 说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。

实现:

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>

int  mymemicmp(const void * _Buf1, const void * _Buf2, size_t _Size)
{
	if (_Buf1 == NULL || _Buf2==NULL)
	{
		return 0;
	}
	if (_Size==0)
	{
		return 0;
	}
	char *str1 = _Buf1;
	char *str2 = _Buf2;//起始点

	//char * last = str1 + _Size;//终点
	int i = 0;
	while ((*str1 == *str2) && i<_Size )//相等一直循环下去,没有到重点
    {
		str1++;
		str2++;
		i++;
    }


	if (i==_Size)
	{
		return 0;
	}
	else
	{
		if (*str1>*str2)
		{
			return 1;
		} 
		else
		{
			return -1;
		}
	}









}

void main1()
{

	int a[5] = { 1, 2, 4, 4, 5 };
	int b[5] = { 1, 2, 4, 5, 4 };
	char str1[128] = "wuwekbeijing";
	char str2[128] = "wuwejshanghai";

	int i=mymemicmp(a, b, 12);//对比,不仅可以对比字符串,对比内存
	int j = mymemicmp(str1, str2, 5);
	printf("%d", i);
	printf("\n%d", j);


	system("pause");
}

void *mymemchr(void *start, char ch, int maxlength)
{
	char *p = NULL;
	for (int i = 0; i < maxlength;i++)
	{
		if (((char*)start)[i]==ch)
		{
			p = (char*)start + i;//类型转换
			break;
		}
	}
	return p;

}
void *mymemchraddr(void *start, char ch, int maxlength)
{
	char *p = NULL;
	for (char *ps = start;ps<(char*)start +maxlength ;ps++)//指针循环
	{
		if (*ps==ch)
		{
			p = ps;
			break;
		}
	}

	return p;
}

void main()
{
	char str1[128] = "wuwekbeijing";
    void *p=	mymemchraddr(str1, 'z', 128);
	if (p==NULL)
	{
		printf("没有找到");
	} 
	else
	{
		printf("找到%p,%s",(char*)p,(char*)p);
	}

	system("pause");
}
posted @ 2016-11-27 20:38  呉语伦比  阅读(1624)  评论(0编辑  收藏  举报