INVSTRPBRK

NOMBRE
SINOPSIS
DESCRIPCIÓN
VALOR DEVUELTO
ERRORES
CONFORME A
BASADO EN
FALLOS
VÉASE TAMBIÉN

NOMBRE

invstrpbrk, invstrcpbrk, iwcspbrk, iwcscpbrk − busca en una cadena un carácter de un conjunto empezando por el final

SINOPSIS

#include <invstrspn.h>

char *invstrpbrk(const char *s, const char *acepta);

char *invstrcpbrk(const char *s, const char *rechaza);

wchar_t *iwcspbrk(const char *wcs, const char *acepta);

wchar_t *iwcscpbrk(const char *wcs, const char *rechaza);

DESCRIPCIÓN

La función invstrpbrk() localiza la última ocurrencia en la cadena s de cualquier carácter de la cadena acepta. La función invstrcpbrk() localiza la última ocurrencia en la cadena s de cualquier carácter que no pertenezca a la cadena rechaza. Las funciones iwcspbrk() e iwcscpbrk() son similares pero trabajan con caracteres anchos en la cadena de caracteres anchos wcs.

VALOR DEVUELTO

La función invstrpbrk() devuelve un puntero al carácter de s siguiente al primer carácter (empezando por el final) que coincida con uno de los caracteres de acepta, o NULL si no se encuentra ninguno u ocurre un error.

Nótese que este comportamiento no es exactamente el inverso del de strpbrk(), ya que ésta devuelve un puntero al primer carácter que efectivamente pertenece a acepta, mientras que invstrpbrk() no devuelve un puntero al último, sino al carácter siguiente a éste.

Esto es así con intención, ya que de esta manera no sólo resultan funciones (muy) ligeramente más rápidas, sino que dado que estas funciones se utilizarán mayoritariamente para encontrar el punto en el que introducir un carácter ‘\0‘ es más adecuado tener dicho punto directamente que necesitar sumar 1.

invstrcpbrk(), iwcspbrk() e iwcscpbrk() devulven resultados equivalentes, dentro de sus diferencias en cuanto a los conjuntos de caracteres acepta y rechaza y en cuanto a trabajar con caracteres comunes o caracteres anchos.

ERRORES

ENOMEM

Memoria insuficiente disponible para realizar un cálculo interno.

CONFORME A

Funciones de Cadenas Invertidas de Envite

invstrpbrk(), invstrcpbrk(), iwcspbrk() e iwcscpbrk() son extensiones de Rolamasao.

BASADO EN

Las funciones son originales, pero esta página de manual se basa en la de strpbrk().

FALLOS

Se definen funciones inversas (*cpbrk()) a funciones inexistentes en la biblioteca estándar.

Se utiliza internamente la función invstrinv() (y su equivalente para caracteres anchos) que es la que puede provocar el error ENOMEM. Además, esto duplica la necesaria utilización de strlen().

VÉASE TAMBIÉN

index(3), memchr(3), rindex(3), strchr(3), strsep(3), strspn(3), strstr(3), strtok(3), strpbrk(3), wcspbrk(3), invstrspn(3), invstrcspn(3), invstrinv(3)