invstrpbrk, invstrcpbrk, iwcspbrk, iwcscpbrk − busca en una cadena un carácter de un conjunto empezando por el final |
#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); |
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. |
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. |
ENOMEM |
Memoria insuficiente disponible para realizar un cálculo interno. |
Funciones de Cadenas Invertidas de Envite invstrpbrk(), invstrcpbrk(), iwcspbrk() e iwcscpbrk() son extensiones de Rolamasao. |
Las funciones son originales, pero esta página de manual se basa en la de strpbrk(). |
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(). |
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) |