一、函数介绍
名称
NAME
memchr, memrchr, rawmemchr - scan memory for a character
//查找内存中的字符
头文件
#include <string.h>
函数原型
void *memchr(const void *s, int c, size_t n);//正向-查找
void *memrchr(const void *s, int c, size_t n);//倒向-查找
void *rawmemchr(const void *s, int c);
返回值
The memchr() and memrchr() functions return a pointer to the matching byte or
NULL if the character does not occur in the given memory area.
The rawmemchr() function returns a pointer to the matching byte, if one is found.
If no matching byte is found, the result is unspecified.
描述
The memchr() function scans the initial n bytes of the memory area
pointed to by s for the first instance of c. Both c and the bytes of
the memory area pointed to by s are interpreted as unsigned char.
The memrchr() function is like the memchr() function, except that it
searches backward from the end of the n bytes pointed to by s instead
of forward from the beginning.
The rawmemchr() function is similar to memchr(): it assumes (i.e., the
programmer knows for certain) that an instance of c lies somewhere in
the memory area starting at the location pointed to by s, and so per‐
forms an optimized search for c (i.e., no use of a count argument to
limit the range of the search). If an instance of c is not found, the
results are unpredictable. The following call is a fast means of
locating a string's terminating null byte:
char *p = rawmemchr(s, '\0');
二、代码设计
代码如下,
#define _GNU_SOURCE
//如果没有添加该宏定义,则编译需要参数 -D_GNU_SOURCE
//如: gcc -D_GNU_SOURCE my_memchr.c -o my_memchr
#include <string.h>
#include <stdio.h>
int main(int argv,char *argc[])
{
char *buf="01233210";
char findBuf='1';
char *p;
p=memchr(buf,findBuf,strlen(buf));
if(p != NULL)
printf("%s\r\n",p);
p=memrchr(buf,findBuf,strlen(buf));
if(p != NULL)
printf("%s\r\n",p);
return 0;
}
三、测试验证
编译之后,运行结果如下:
哈哈