一、函数介绍
名称
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, ' ');
二、代码设计
代码如下,
#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 ",p); p=memrchr(buf,findBuf,strlen(buf)); if(p != NULL) printf("%s ",p); return 0; }
三、测试验证
编译之后,运行结果如下:
哈哈