memchr()

Find the first occurrence of a character in a buffer

Synopsis:

#include <string.h>

void* memchr(void* buf,
              int ch,
              size_t length );

Arguments:

buf
The buffer that you want to search.
ch
The character that you're looking for.
length
The number of bytes to search in the buffer.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The memchr() function locates the first occurrence of ch (converted to an unsigned char) in the first length bytes of the buffer pointed to by buf.

Returns:

A pointer to the located character, or NULL if ch couldn't be found.

Examples:

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

int main( void )
{
    char buffer[80];
    char* where;

    strcpy( buffer, "video x-rays" );

    where = (char *) memchr( buffer, 'x', 6 );
    if( where == NULL ) {
        printf( "'x' not found\n" );
    } else {
        printf( "%s\n", where );
    }

    where = (char *) memchr( buffer, 'r', 9 );
    if( where == NULL ) {
        printf( "'r' not found\n" );
    } else {
        printf( "%s\n", where );
    }
    
    return EXIT_SUCCESS;
}

produces the output:

'x' not found
rays

Classification:

ANSI, POSIX 1003.1

Safety:
Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes

See also:

memccpy(), memcmp(), memcpy(), memicmp(), memmove(), memset() strchr(), strrchr(), wmemchr(), wmemcmp(), wmemcpy(), wmemmove(), wmemset()