【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>
当第一次遇到字符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