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 |