Manpages - memchr.3
Table of Contents
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 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, '\0');
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.
*memrchr*() first appeared in glibc in version 2.2.
ATTRIBUTES
For an explanation of the terms used in this section, see *attributes*(7).
Interface | Attribute | Value |
*memchr*(), *memrchr*(), *rawmemchr*() | 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.13 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/.