SDK Multiplataforma en C logo

SDK Multiplataforma en C

Funciones estándar

❮ Anterior
Siguiente ❯

Funciones

uint32_tblib_strlen (...)
const char_t*blib_strstr (...)
voidblib_strcpy (...)
voidblib_strncpy (...)
voidblib_strcat (...)
intblib_strcmp (...)
intblib_strncmp (...)
int64_tblib_strtol (...)
uint64_tblib_strtoul (...)
real32_tblib_strtof (...)
real64_tblib_strtod (...)
voidblib_qsort (...)
voidblib_qsort_ex (...)
bool_tblib_bsearch (...)
bool_tblib_bsearch_ex (...)
voidblib_atexit (...)
voidblib_abort (void)
voidblib_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 dest, acabada en carácter nulo '\0'.

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 NULL.

base

Base de numeración: 2, 8, 10, 16.

err

Se asigna valor TRUE si hay algún error en el análisis de la cadena. Pueder ser NULL.

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 NULL.

base

Base de numeración: 2, 8, 10, 16.

err

Se asigna valor TRUE si hay algún error en el análisis de la cadena. Pueder ser NULL.

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 NULL.

err

Se asigna valor TRUE si hay algún error en el análisis de la cadena. Pueder ser NULL.

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 NULL.

err

Se asigna valor TRUE si hay algún error en el análisis de la cadena. Pueder ser NULL.

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 NULL.

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 NULL.

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);
❮ Anterior
Siguiente ❯