C语言-memchr函数字节查找

发布时间:2024年01月21日

一、函数介绍

名称

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;
 }

三、测试验证

编译之后,运行结果如下:
在这里插入图片描述
哈哈

文章来源:https://blog.csdn.net/weixin_46158019/article/details/135710752
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。