memchr()
Find the first occurrence of a character in a buffer
Synopsis:
#include <string.h>
void* memchr( const 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.
char buf[16];
char *p = memchr(buf, 'a', 100);
If the letter a doesn't appear within buf and if the memory at buf + 40 happens to be an a, then the call returns &buf[40], but that's outside the allocated buffer and in most circumstances would represent a bogus return value. If a page boundary is crossed between buf and buf + 100, then the function can result in the delivery of a fatal signal to the process. The only way to avoid these issues is ensure that &buf[length - 1] is within the region allocated for 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
Environment variables:
- LIBC_STRINGS
 - On certain targets, you can use this environment variable to select the implementation of
  memchr().
  The value is one of the strings given below.
  
  
  
- for AArch64 targets:
    
- aarch64_neon — optimized for AARCH64 targets using NEON
 - generic — the default
 
 
 - for AArch64 targets:
    
 
Classification:
| Safety: | |
|---|---|
| Cancellation point | No | 
| Signal handler | Yes | 
| Thread | Yes | 
