Este proyecto ha sido creado como parte del currículo de 42 por lupalomi
Este proyecto consiste en una librería que incluye múltiples funciones de la biblioteca estándar de C libc, así como funciones de otras bibliotecas que resultan de mucha utilidad.
El objetivo de estas funciones es facilitar el desarrollo de futuros proyectos de 42 Common Core. Incluye:
- Un archivo
libft.h - Un archivo
Makefile - Múltiples archivos .c que representan a las funciones.
Para utilizar la libft, será necesario clonar el repositorio dentro de la carpeta de proyecto donde se desea usar. El siguiente comando creará la carpeta libft con los archivos anteriormente nombrados.
git clone https://github.com/LuisPM24/libft_2026.git libftPosteriormente, será necesario compilar los archivos de la propia librería. Para ello, se debe usar
cd libft
makeEl siguiente comando también es válido, pues lo que hace es volver a compilar toda la librería, eliminando los antiguos archivos.
make reUna vez compilada la librería, será necesario añadir la siguiente cabecera, mediante la directiva include, dentro del archivo en el que se desea usar las funciones de la misma:
#include "libft/libft.h"Esto permite usar cualquier función de la libft dentro del archivo correspondiente, por lo que se recomienda añadir esta cabecera en un archivo .h
Para compilar un archivo .c junto con la librería se deberá usar el siguiente comando:
cc -Wall -Wextra -Werror main.c -Llibft -lft -IlibftPD: En el anterior comando, se deberá sustituir main.c por los archivos que se desean compilar.
Se requiere un compilador de C (como cc) y un sistema compatible con POSIX (Linux o macOS), ya que se utilizan cabeceras estándar como <unistd.h>.
Durante la realización de este proyecto, se ha recurrido a las páginas del manual de las funciones originales. Para ello, se ha usado el comando man seguido de la función que se desea consultar, como por ejemplo:
man atoiPara consultar la página del manual de la función atoi original de la libc.
La siguiente página constituye una versión online de las páginas del manual: https://man7.org/linux/man-pages/index.html
Este proyecto no utiliza IA generativa.
Este apartado describe, de manera más detallada, cada una de las funciones.
Recibe un valor int. Devuelve 1 si el valor corresponde, en ASCII, a un carácter alfabético. En caso contrario, devuelve un 0.
int ft_isalpha(int c)Recibe un valor int. Devuelve 1 si el valor corresponde, en ASCII, a un carácter numérico. En caso contrario, devuelve un 0.
int ft_isdigit(int c)Recibe un valor int. Devuelve 1 si el valor corresponde, en ASCII, a un carácter alfanumérico. En caso contrario, devuelve un 0.
int ft_isalnum(int c)Recibe un valor int. Devuelve 1 si el valor corresponde a un carácter ASCII. En caso contrario, devuelve un 0.
int ft_isascii(int c)Recibe un valor int. Devuelve 1 si el valor corresponde, en ASCII, a un carácter imprimible. En caso contrario, devuelve un 0.
int ft_isprint(int c)Recibe un valor char *. Devuelve la longitud de la cadena como valor.
size_t ft_strlen(const char *s)Recibe un valor void *. Modifica el puntero introducido s cambiando n valores a c. Posteriormente, devuelve la cadena.
void *ft_memset(void *s, int c, size_t n)Recibe un valor void *. Modifica la cadena introducida *s cambiando n valores a 0.
void ft_bzero(void *s, size_t n)Dado el valor src, que es del tipo void *, copia n valores a dest, que es del tipo void *. Posteriormente, devuelve el puntero. En caso de error, devuelve NULL. Esta función NO PERMITE OVERLAP.
void *ft_memcpy(void *dest, const void *src, size_t n)Dado el valor src, que es del tipo void *, copia n valores a dest, que es del tipo void *. Posteriormente, devuelve el puntero. En caso de error, devuelve NULL. Esta función PERMITE OVERLAP.
void *ft_memmove(void *dest, const void *src, size_t n)Dado src (const char *), copia hasta size - 1 caracteres en dest (char *), asegura que dest quede terminada en nulo (si size > 0) y devuelve la longitud total de src.
size_t ft_strlcpy(char *dst, const char *src, size_t size)Concatena la cadena src al final de dst, asegurando que el resultado esté terminado en nulo, si hay espacio y sin sobrepasar el tamaño total del buffer size.
size_t ft_strlcat(char *dst, const char *src, size_t size)Recibe un valor c alfabético en ASCII. Retorna el mismo carácter ASCII pero en mayúscula.
int ft_toupper(int c)Recibe un valor c alfabético en ASCII. Retorna el mismo carácter ASCII pero en minúscula.
int ft_tolower(int c)Busca el primer carácter c dentro de la cadena s. Devuelve un puntero desde esa primera referencia. En caso de que no encuentre ese carácter, devuelve un NULL.
char *ft_strchr(const char *s, int c)Busca la última referencia al carácter c dentro de la cadena s. Devuelve un puntero desde esa última referencia. En caso de que no encuentre ese carácter, devuelve un NULL.
char *ft_strrchr(const char *s, int c);Compara n carácteres de la cadena s1 con la cadena s2. Si existe algún carácter diferente, devuelve la diferencia de los valores ASCII. En caso de que todos los carácteres sean iguales, devuelve 0.
int ft_strncmp(const char *s1, const char *s2, size_t n)Busca dentro de los primeros n valores de s la primera aparición del valor c. Devuelve un puntero a esa ubicación. En caso contrario, devuelve NULL.
void *ft_memchr(const void *s, int c, size_t n)Compara n valores del puntero s1 con el puntero s2. Si existe algún carácter diferente, devuelve la diferencia de los valores. En caso de que todos los carácteres sean iguales, devuelve 0.
int ft_memcmp(const void *s1, const void *s2, size_t n)Busca la subcadena little dentro de los primeros len carácteres de big. Devuelve un puntero a esa ubicación. En caso contrario, devuelve NULL.
char *ft_strnstr(const char *big, const char *little, size_t len)Convierte una cadena de carácteres ASCII nptr a int.
int ft_atoi(const char *nptr)Reserva memoria para nmemb elementos de tamaño size, inicializa todo el puntero a 0 y lo devuelve. Si falla, retorna NULL.
void *ft_calloc(size_t nmemb, size_t size)Genera un duplicado de la cadena s y lo retorna. En caso de error, retorna NULL.
char *ft_strdup(const char *s)Copia hasta len carácteres de s, empezando desde start. Posteriormente, devuelve una nueva cadena con esos carácteres. En caso de error, retorna NULL.
char *ft_substr(char const *s, unsigned int start, size_t len)Genera una nueva cadena mediante la unión de las cadenas s1 y s2. Posteriormente, devuelve el string con la unión. En caso de error, devuelve NULL.
char *ft_strjoin(char const *s1, char const *s2)Elimina la cadena set del principio y final de la cadena s1. Posteriormente, devuelve la cadena. En caso de error, devuelve NULL.
char *ft_strtrim(char const *s1, char const *set)Divide, cada vez que encuentra el carácter c, la cadena s. Retorna un puntero con todas las divisiones y terminado en NULL. En caso de error, retorna NULL.
char **ft_split(char const *s, char c)Convierte un número n de int a ASCII. En caso de error, retorna NULL.
char *ft_itoa(int n)Aplica la función f a cada carácter de la cadena s, pasando su índice como primer argumento y el propio carácter como segundo argumento. Retorna una nueva cadena con los resultados de aplicar dicha función a la cadena. En caso de error, retorna NULL.
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))Aplica la función f a cada carácter de la cadena s, pasando como parámetros el índice de cada carácter dentro de s y la dirección del propio carácter, que puede modificarse si es necesario. En caso de error, retorna NULL.
void ft_striteri(char *s, void (*f)(unsigned int, char*))Escribe el carácter c en fd.
void ft_putchar_fd(char c, int fd)Escribe la cadena de carácteres s en fd.
void ft_putstr_fd(char *s, int fd)Escribe la cadena de carácteres s, seguida de un salto de línea, en fd.
void ft_putendl_fd(char *s, int fd)Escribe el número n en fd.
void ft_putnbr_fd(int n, int fd)Crea un nuevo nodo t_list mediante un content dado. La variable next se inicializa como NULL. Retorna el nuevo nodo. En caso de error, retorna NULL.
t_list *ft_lstnew(void *content)Añade un nodo new al principio de la lista lst.
void ft_lstadd_front(t_list **lst, t_list *new)Mide y retorna la cantidad de nodos existentes en una lista lst.
int ft_lstsize(t_list *lst)Retorna el último nodo de la lista lst. Si no se entrega ninguna lista, retorna NULL.
t_list *ft_lstlast(t_list *lst)Añade un nodo new al final de la lista lst.
void ft_lstadd_back(t_list **lst, t_list *new)Recibe como parámetro un nodo lst y libera la memoria del contenido utilizando la función del dada como parámetro. También libera el nodo en sí mismo, pero no libera el siguiente nodo.
void ft_lstdelone(t_list *lst, void (*del)(void *))Elimina y libera el nodo lst dado y todos los consecutivos del mismo, utilizando la función del y free.
void ft_lstclear(t_list **lst, void (*del)(void *))Itera la lista lst y aplica la función f en el contenido de cada nodo.
void ft_lstiter(t_list *lst, void (*f)(void *))Itera la lista lst y aplica la función f al contenido de cada nodo. Crea una lista resultante de aplicar sucesivamente la función f a cada nodo. La función del se utiliza para eliminar el contenido de un nodo si es necesario.
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))