MEMCHR(3)                 (2019-03-06)                  MEMCHR(3)

     NAME
          memchr, memrchr, rawmemchr - scan memory for a character

     SYNOPSIS
          #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);

     Feature Test Macro Requirements for glibc (see
     feature_test_macros(7)):

          memrchr(), rawmemchr(): _GNU_SOURCE

     DESCRIPTION
          The memchr() function scans the initial n bytes of the mem-
          ory 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 inter-
          preted 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 performs 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 locat-
          ing a string's terminating null byte:

              char *p = rawmemchr(s, aq\0aq);

     RETURN VALUE
          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.

     VERSIONS
          rawmemchr() first appeared in glibc in version 2.1.

     Page 1                       Plan 9             (printed 5/20/22)

     MEMCHR(3)                 (2019-03-06)                  MEMCHR(3)

          memrchr() first appeared in glibc in version 2.2.

     ATTRIBUTES
          For an explanation of the terms used in this section, see
          attributes(7).  allbox; lbw32 lb lb l l l.
          Interface Attribute Value T{ memchr(), memrchr(),
          rawmemchr() T}   Thread safety  MT-Safe

     CONFORMING TO
          memchr(): POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4,
          4.3BSD.

          The memrchr() function is a GNU extension, available since
          glibc 2.1.91.

          The rawmemchr() function is a GNU extension, available since
          glibc 2.1.

     SEE ALSO
          bstring(3), ffs(3), index(3), memmem(3), rindex(3),
          strchr(3), strpbrk(3), strrchr(3), strsep(3), strspn(3),
          strstr(3), wmemchr(3)

     COLOPHON
          This page is part of release 5.10 of the Linux man-pages
          project.  A description of the project, information about
          reporting bugs, and the latest version of this page, can be
          found at https://www.kernel.org/doc/man-pages/.

     Page 2                       Plan 9             (printed 5/20/22)