Namespaces
Variants

memchr

From cppreference.net
< c ‎ | string ‎ | byte
Definido en el encabezado <string.h>
void * memchr ( const void * ptr, int ch, size_t count ) ;
(1)
/*QVoid*/ * memchr ( /*QVoid*/ * ptr, int ch, size_t count ) ;
(2) (desde C23)
1) Encuentra la primera ocurrencia de ( unsigned char ) ch en los primeros count bytes (cada uno interpretado como unsigned char ) del objeto apuntado por ptr .
2) Función genérica de tipos equivalente a (1) . Sea T un tipo de objeto no calificado (incluyendo void ).
  • Si ptr es de tipo const T * , el tipo de retorno es const void * .
  • De lo contrario, si ptr es de tipo T * , el tipo de retorno es void * .
  • De lo contrario, el comportamiento es indefinido.
Si se suprime la definición de macro de cada una de estas funciones genéricas para acceder a una función real (por ejemplo, si ( memchr ) o se utiliza un puntero a función), la declaración de función real (1) se hace visible.

El comportamiento es indefinido si el acceso ocurre más allá del final del array buscado. El comportamiento es indefinido si ptr es un puntero nulo.

Esta función se comporta como si leyera los bytes secuencialmente y se detiene tan pronto como encuentra un byte coincidente: si el array apuntado por ptr es más pequeño que count , pero la coincidencia se encuentra dentro del array, el comportamiento está bien definido.

(since C11)

Contenidos

Parámetros

ptr - puntero al objeto a examinar
ch - bytes a buscar
count - número máximo de bytes a examinar

Valor de retorno

Puntero a la ubicación del byte, o un puntero nulo si no se encuentra dicho byte.

Ejemplo

#include <stdio.h>
#include <string.h>
int main(void)
{
    const char str[] = "ABCDEFG";
    const int chars[] = {'D', 'd'};
    for (size_t i = 0; i < sizeof chars / (sizeof chars[0]); ++i)
    {
        const int c = chars[i];
        const char *ps = memchr(str, c, strlen(str));
        ps ? printf ("character '%c'(%i) found: %s\n", c, c, ps)
           : printf ("character '%c'(%i) not found\n", c, c);
    }
    return 0;
}

Salida posible:

character 'D'(68) found: DEFG
character 'd'(100) not found

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.24.5.1 La función memchr (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.24.5.1 La función memchr (p: 267-268)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.24.5.1 La función memchr (p: 367)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.21.5.1 La función memchr (p: 330)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.11.5.1 La función memchr

Véase también

encuentra la primera ocurrencia de un carácter
(función)