# memchr

From cppreference.com
< c‎ | string‎ | byte

Defined in header `<string.h>` |  |
void* memchr( const void* ptr, int ch, size_t count ); |  |

Finds the first occurrence of `ch` (after conversion to unsigned char as if by (unsigned char)ch) in the initial `count` characters (each interpreted as unsigned char) of the object pointed to by `ptr`.

The behavior is undefined if access occurs beyond the end of the array searched. The behavior is undefined if `ptr` is a null pointer.

This function behaves as if it reads the characters sequentially and stops as soon as a matching character is found: if the array pointed to by `ptr` is smaller than `count`, but the match is found within the array, the behavior is well-defined | (since C11)

### Parameters

ptr | - | pointer to the object to be examined
ch | - | character to search for
count | - | max number of characters to examine

### Return value

Pointer to the location of the character, or NULL if no such character is found.

### Example

Run this code

    #include <stdio.h>
    #include <string.h>

    int main(void)
    {
        char str[] = "ABCDEFG";
        char *ps = memchr(str,'D',strlen(str));
        if (ps != NULL)
           printf ("search character found:  %s\n", ps);
        else
           printf ("search character not found\n");

        return 0;
    }

Output:

    search character found:  DEFG

### References

- C11 standard (ISO/IEC 9899:2011):

  - 7.24.5.1 The memchr function (p: 367)

- C99 standard (ISO/IEC 9899:1999):

  - 7.21.5.1 The memchr function (p: 330)

- C89/C90 standard (ISO/IEC 9899:1990):

  - 4.11.5.1 The memchr function

### See also

strchr | finds the first occurrence of a character (function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/string/byte/memchr&oldid=96961"