MEMCHR(3) Linux Programmer's Manual MEMCHR(3)
memchr, memrchr, rawmemchr - scan memory for a character
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
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 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
locating a string's terminating null byte:
char *p = rawmemchr(s, '