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 (...) |
uint32_t | blib_strftime (...) |
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 (...) |
const char_t* | blib_getenv (...) |
int32_t | blib_setenv (...) |
void | blib_atexit (...) |
void | blib_abort (void) |
void | blib_exit (...) |
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.
1. Conversión de fechas
- Utiliza blib_strftime para convertir una fecha a texto.
Modificador | Reemplazado por | Ejemplo |
%a | Día de la semana abreviado | Sun |
%A | Día de la semana completo | Sunday |
%b | Nombre del mes abreviado | Mar |
%B | Nombre del mes completo | March |
%c | Representación del día/hora | Sun Aug 19 02:56:02 2012 |
%d | Día del mes (01-31) | 19 |
%H | Hora en formato 24h (00-23) | 14 |
%I | Hora en formato 12h (01-12) | 05 |
%j | Día del año (001-366) | 231 |
%m | Mes como número decimal (01-12) | 08 |
%M | Minuto (00-59) | 55 |
%p | AM o PM | PM |
%S | Segundo (00-59) | 02 |
%U | Número de semana con el primer Domingo como el primer día de la semana 1 (00-53) | 33 |
%w | Día de la semana como número con Domingo 0 (0-6) | 4 |
%W | Número de semana con el primer Lunes como el primer día de la semana 1 (00-53) | 34 |
%x | Representation de fecha | 08/19/12 |
%X | Representation de hora | 02:50:06 |
%y | Año con dos dígitos (00-99) | 01 |
%Y | Año | 2012 |
%Z | Zona horaria o abreviación | CDT |
%% | Signo % | % |
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_strftime ()
Transforma una fecha en una cadena de texto, utilizando el formato de strftime
.
uint32_t blib_strftime(char_t *dest, const uint32_t size, const char_t *format, const int16_t year, const uint8_t month, const uint8_t mday, const uint8_t wday, const uint8_t hour, const uint8_t minute, const uint8_t second);
dest | Puntero al búfer donde será escrito el resultado. Terminará en carácter nulo |
size | Tamaño de |
format | Formato de la cadena con la fecha. |
year | Año. |
month | Número de mes (1,12). |
mday | Día del mes (1,31). |
wday | Día de la semana (0,6). 0=Domingo. |
hour | Hora (0,23). |
minute | Minuto (0,59). |
second | Segundo (0,59). |
Retorna
El número bytes escritos en dest
, sin incluir el caracter '\0'. Si la cadena no cabe en dest
retorna 0.
Observaciones
Ver Conversión de fechas.
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_getenv ()
Obtiene el valor de una variable de entorno.
const char_t* blib_getenv(const char_t *name);
name | El nombre de la variable. |
Retorna
El valor de la variable. NULL
si dicha variable no existe.
blib_setenv ()
Establece el valor de una variable de entorno.
int32_t blib_setenv(const char_t *name, const char_t *value);
name | El nombre de la variable. |
value | El valor de la variable. |
Retorna
0
si se ha establecido correctamente. En caso contrario, un código de error.
Observaciones
Si la variable ya existe, su valor se sobrescribirá.
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_exit ()
Termina un proceso.
void blib_exit(int code);
code | Código de retorno. |
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);