C语言-memchr函数字节查找

一、函数介绍

名称

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

三、测试验证

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

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值