C語言之memchr函數

【FROM MSDN && 百科】

原型:  const void * memchr ( const void * ptr, int value, size_t num );
               void * memchr (       void * ptr, int value, size_t num );

#include<string.h>

從buf所指內存區域的前count個字節查找字符ch。

當第一次遇到字符ch時停止查找。如果成功,返回指向字符ch的指針;否則返回NULL。


DEMO:


//#define FIRST_DEMO
//#define SECOND_DEMO
#define MYMEMCHR
#ifdef FIRST_DEMO
#include <stdio.h>
#include <conio.h>

int main(void)
{
    char *pch;
	char str[]="Example string";
	pch=(char*)memchr(str,'p',strlen(str));
	if (pch!=NULL)
	{
		printf("'p' found at position %d.\n",pch-str+1);
	}
	else
	{
		printf("'p' not found .\n");
	}
	getch();
	return 0;
}
#elif defined SECOND_DEMO
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(void)
{
	char *ss="Hello,Programmers!\n";
	char *p;
	p=memchr(ss,'P',strlen(ss));
	if (p)
	{
		printf("%s\n",p);
	}
	else
	{
		printf("Not Found!\n");
	}
	getch();
	return 0;
}
#elif defined MYMEMCHR
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <assert.h>
void *mymemchar(void *buffer,int ch,size_t count);
int main(void)
{
	char *ss="Hello,Programmers!\n";
	char *p;
	p=(char *)memchr(ss,'P',strlen(ss)+1);
	if (p)
	{
		printf("%s\n",p);
	}
	else
	{
		printf("Not Found\n");
	}
	getch();
	return 0;
}
/*FROM: http://blog.chinaunix.net/uid-20480343-id-1941629.html */
void *mymemchar(void *buffer,int ch,size_t count)
{
	assert(NULL!=buffer);
	while(count && (*(unsigned char *)buffer != (unsigned char )ch))
	{
		buffer=(unsigned char *)buffer +1;
		count--;
	}
	return (count ? (void *)buffer:NULL);
}
#endif


發佈了90 篇原創文章 · 獲贊 68 · 訪問量 66萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章