Funciones estándar
Funciones
uint32_t | blib_strlen (...) |
const char_t* | blib_strstr (...) |
void | blib_strcpy (...) |
void | blib_strncpy (...) |
void | blib_strcat (...) |
int | blib_strcmp (...) |
int | blib_strncmp (...) |
int64_t | blib_strtol (...) |
uint64_t | blib_strtoul (...) |
real32_t | blib_strtof (...) |
real64_t | blib_strtod (...) |
void | blib_qsort (...) |
void | blib_qsort_ex (...) |
bool_t | blib_bsearch (...) |
bool_t | blib_bsearch_ex (...) |
void | blib_atexit (...) |
void | blib_abort (void) |
void | blib_debug_break (void) |
BLib
incluye funciones útiles de la librería estándar de C que no encajan en otros módulos como BMath
o BMem
. Al igual que en <stdlib.h>
encontramos funciones de conversión de texto, algoritmos o interacción con el entorno.
- Utiliza blib_strcmp para comparar dos cadenas de texto.
- Utiliza blib_qsort para ordenar un vector de elementos.
- Utiliza blib_bsearch para realizar una búsqueda dicotómica sobre un vector ordenado.
- Utiliza blib_abort para acabar la ejecución del programa.
blib_strlen ()
Retorna la longitud en bytes de una cadena de texto.
uint32_t blib_strlen(const char_t *str);
str | Cadena acabada en carácter nulo '\0'. |
Retorna
Longitud de la cadena sin incluir el carácter nulo.
Observaciones
Ver Unicode, el número de bytes no es equivalente al número de caracteres.
blib_strstr ()
Busca una subcadena dentro de una cadena más larga.
const char_t* blib_strstr(const char_t *str, const char_t *substr);
str | Cadena acabada en carácter nulo '\0'. |
substr | Subcadena a buscar acabada en carácter nulo '\0'. |
Retorna
Puntero al inicio de la primera subcadena encontrada o NULL
si no existe ninguna.
blib_strcpy ()
Copia el contenido de una cadena en otra.
void blib_strcpy(char_t *dest, const uint32_t size, const char_t *src);
dest | Buffer destino. |
size | Tamaño del buffer destino en bytes. |
src | Cadena a copiar acabada en carácter nulo '\0'. |
Observaciones
Solo los primeros size-1
bytes serán copiados, en el caso de que src
sea más larga que la capacidad de dest
.
blib_strncpy ()
Copia los primeros n
bytes de na cadena en otra.
void blib_strncpy(const char_t *dest, const uint32_t size, const char_t *src, const uint32_t n);
dest | Buffer destino. |
size | Tamaño del buffer destino en bytes. |
src | Cadena a copiar acabada en carácter nulo '\0'. |
n | Número de bytes a copiar. |
Observaciones
Solo los primeros size-1
bytes serán copiados, en el caso de que n
sea mayor que size
.
blib_strcat ()
Concatena dos cadenas.
void blib_strcat(char_t *dest, const uint32_t size, const char_t *src);
dest | Buffer origen y destino. |
size | Tamaño del buffer destino en bytes. |
src | Cadena a añadir a |
Observaciones
No se sobrepasarán los size-1
bytes en dest
, por lo que la concatenación será truncada si es necesario.
blib_strcmp ()
Compara dos cadenas.
int blib_strcmp(const char_t *str1, const char_t *str2);
str1 | Primera cadena a comparar, acabada en carácter nulo '\0'. |
str2 | Segunda cadena a comparar, acabada en carácter nulo '\0'. |
Retorna
Resultado de la comparación.
blib_strncmp ()
Compara los primeros n
bytes de dos cadenas.
int blib_strncmp(const char_t *str1, const char_t *str2, const uint32_t n);
str1 | Primera cadena a comparar, acabada en carácter nulo '\0'. |
str2 | Segunda cadena a comparar, acabada en carácter nulo '\0'. |
n | Número máximo de bytes a comparar. |
Retorna
Resultado de la comparación.
blib_strtol ()
Transforma una cadena de texto en un número entero.
int64_t blib_strtol(const char_t *str, char_t **endptr, uint32_t base, bool_t *err);
str | Cadena que comienza con un número entero. |
endptr | Puntero cuyo valor será el primer carácter tras el número. Puede ser |
base | Base de numeración: 2, 8, 10, 16. |
err | Se asigna valor |
Retorna
Número resultado del análisis de la cadena.
blib_strtoul ()
Transforma una cadena de texto en un número entero sin signo.
uint64_t blib_strtoul(const char_t *str, char_t **endptr, uint32_t base, bool_t *err);
str | Cadena que comienza con un número entero. |
endptr | Puntero cuyo valor será el primer carácter tras el número. Puede ser |
base | Base de numeración: 2, 8, 10, 16. |
err | Se asigna valor |
Retorna
Número resultado del análisis de la cadena.
blib_strtof ()
Transforma una cadena de texto en un número real de 32 bits.
real32_t blib_strtof(const char_t *str, char_t **endptr, bool_t *err);
str | Cadena que comienza con un número real. |
endptr | Puntero cuyo valor será el primer carácter tras el número. Puede ser |
err | Se asigna valor |
Retorna
Número resultado del análisis de la cadena.
blib_strtod ()
Transforma una cadena de texto en un número real de 64 bits.
real64_t blib_strtod(const char_t *str, char_t **endptr, bool_t *err);
str | Cadena que comienza con un número entero. |
endptr | Puntero cuyo valor será el primer carácter tras el número. Puede ser |
err | Se asigna valor |
Retorna
Número resultado del análisis de la cadena.
blib_qsort ()
Ordena un vector de elementos utilizando el algoritmo QuickSort.
void blib_qsort(byte_t *array, const uint32_t nelems, const uint32_t size, FPtr_compare func_compare);
array | Vector de elementos. |
nelems | Número de elementos. |
size | Tamaño de cada elemento. |
func_compare | Función de comparación. |
blib_qsort_ex ()
Ordena un vector de elementos utilizando el algoritmo QuickSort.
void blib_qsort_ex(byte_t *array, const uint32_t nelems, const uint32_t size, FPtr_compare_ex func_compare, const byte_t *data);
array | Vector de elementos. |
nelems | Número de elementos. |
size | Tamaño de cada elemento. |
func_compare | Función de comparación que acepta datos extra. |
data | Datos extra que serán pasados en cada comparación. |
blib_bsearch ()
Busca un elemento en un vector ordenado.
bool_t blib_bsearch(const byte_t *array, const byte_t *key, const uint32_t nelems, const uint32_t size, FPtr_compare func_compare, uint32_t *pos);
array | Vector de elementos. |
key | Clave de búsqueda. |
nelems | Número de elementos. |
size | Tamaño de cada elemento. |
func_compare | Función de comparación. |
pos | Posición del elemento encontrado. Puede ser |
Retorna
TRUE
si se ha encontrado el elemento.
blib_bsearch_ex ()
Busca un elemento en un vector ordenado.
bool_t blib_bsearch_ex(const byte_t *array, const byte_t *key, const uint32_t nelems, const uint32_t size, FPtr_compare_ex func_compare, const byte_t *data, uint32_t *pos);
array | Vector de elementos. |
key | Clave de búsqueda. |
nelems | Número de elementos. |
size | Tamaño de cada elemento. |
func_compare | Función de comparación que acepta datos extra. |
data | Datos extra que serán pasados en cada comparación. |
pos | Posición del elemento encontrado. Puede ser |
Retorna
TRUE
si se ha encontrado el elemento.
blib_atexit ()
Añade una función que será llamada cuando el programa termine.
void blib_atexit(void()(void) *func);
func | Función. |
blib_abort ()
Termina de forma abrupta la ejecución del programa.
void
blib_abort(void);
Observaciones
No se liberan recursos ni se realiza un cierre controlado. El único caso donde se justifica su uso es salir del programa tras detectar un error irrecuperable (p.e NULL
pointer).
blib_debug_break ()
Detiene la ejecución del programa en el punto donde se encuentra la función y devuelve el control de depurador para que podamos inspeccionar la pila, variables, etc.
void
blib_debug_break(void);