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/.

Author: dt

Created: 2022-02-20 Sun 17:02