MEMCHR(3) Linux Programmer's Manual MEMCHR(3)

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


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

rawmemchr(): _GNU_SOURCE

The memchr() function scans the first n bytes of the memory area pointed to by s for the character c. The first byte to match c (interpreted as an unsigned character) stops the operation.

The memrchr() function is like the memchr() function, except that it searches backwards from the end of the n bytes pointed to by s instead of forwards from the beginning.

The rawmemchr() function is similar to memchr(): it assumes (i.e., the programmer knows for certain) that the character c lies somewhere in the string s, and so performs an optimized search for the character c (i.e., no checking for the terminating null byte, or use of an argument, n, to limit the range of the search). If the chararacter c is not in the string s, then rawmemchr() may proceeed to search beyond the end of the string, and the result is unspecified. The folowing call is a fast means of locating a string's terminating null byte:


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

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 conforms to SVr4, 4.3BSD, C89, C99, POSIX.1-2001.

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.

index(3), rindex(3), strchr(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3), wmemchr(3)

This page is part of release 3.05 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

2008-07-09

Different Versions of this Page: