---
name: "memchr"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/memchr"
---

# memchr(3)

locate byte in memory object

## NAME

**memchr** – locate byte in memory object

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<string.h\>**

*QVoid \**\

**memchr**(*QVoid \*b*, *int c*, *size\_t len*);

*QVoid \**\

**memrchr**(*QVoid \*b*, *int c*, *size\_t len*);

## DESCRIPTION

The **memchr**() function locates the first occurrence of *c* (converted to an *unsigned char*) in object *b*, limited to at most *len* characters.

The **memrchr**() function behaves like **memchr**(), except that it locates the last occurrence of *c* in object *b*, limited to the first *len* characters.

## RETURN VALUES

The **memchr**() and **memrchr**() functions return a pointer to the byte located, or NULL if no such byte exists within *len* bytes.

## SEE ALSO

[memmem(3)](/memmem/3.md), [strchr(3)](/strchr/3.md), [strcspn(3)](/strcspn/3.md), [strpbrk(3)](/strpbrk/3.md), [strrchr(3)](/strrchr/3.md), [strsep(3)](/strsep/3.md), [strspn(3)](/strspn/3.md), [strstr(3)](/strstr/3.md), [strtok(3)](/strtok/3.md), [wmemchr(3)](/wmemchr/3.md)

## STANDARDS

The **memchr**() function conforms to ISO/IEC 9899:2024 (“ISO C23”), where it is specified as a qualifier-preserving function.

The **memrchr**() function is a GNU extension and conforms to no standard. Like the qualifier-preserving functions in ISO/IEC 9899:2024 (“ISO C23”), FreeBSD implements **memrchr**() as qualifier-preserving as well.

## HISTORY

The **memrchr**() function first appeared in GNU libc 2.1.91, this implementation first appeared in FreeBSD 6.4, coming from OpenBSD 4.3.
