Este proyecto ha sido creado como parte del currículo de 42 por omarquez
LIBFT es el primer proyecto en el trayecto como estudiante en 42, se ha realizado implementaciones propias de fuciones de C para comprender su funcionamiento y poder utilizar esta librería en futuros proyectos del Cursus.
Consta de 3 partes:
- Funciones de libc: Algunas de las funciones estándar de C.
- Funciones adicionales: Funciones que serán útiles para futuros proyectos.
- Funciones para Listas enlazadas: Creacion de la estructura de las listas y funciones para el manejo de las mismas.
Un Makefile es un archivo de texto especial utilizado para automatizar tareas, principalmente la compilación y construcción de software. Funcinona junto con la herramienta make, leyendo reglas que definen las dependencias entre archivos, lo que permite al sistema actualizar solo los archivos modificados, ahorrando tiempo.
| Funciones de libc | Funciones adicionales | Funciones de listas |
|---|---|---|
| ft_isalpha | ft_substr | ft_lstnew |
| ft_isdigit | ft_strjoin | ft_lstadd_front |
| ft_isalnum | ft_strtrim | ft_lstsize |
| ft_isascii | ft_split | ft_lstlast |
| ft_isprint | ft_itoa | ft_lstadd_back |
| ft_tolower | ft_strmapi | ft_lstdelone |
| ft_toupper | ft_putchar_fd | ft_lstclear |
| ft_strlen | ft_putstr_fd | ft_lsttiter |
| ft_strlcpy | ft_putendl_fd | ft_lstmap |
| ft_strlcat | ft_putnbr_fd | |
| ft_strchr | ft_striteri | |
| ft_strrchr | ||
| ft_strncmp | ||
| ft_strnstr | ||
| ft_strdup | ||
| ft_calloc | ||
| ft_memset | ||
| ft_memcpy | ||
| ft_memmove | ||
| ft_atoi |
Es una función para verificar si el carácter recibido es parte del alfabeto.
Es una función para verificar si el carácter recibido es un dígito.
Es una función para verificar si el carácter recibido es alfanumerico.
Es una función para verificar si el carácter recibido es un carácter ASCII.
Es una función para verificar si el carácter recibido esta en el rango de los caracteres imprimibles.
Es una función para transformar el carácter recibido a minúscula.
Es una función para transformar el carácter recibido a mayúscula.
Calcula la longitud de una cadena.
Copia una cadena de origen a un destino asegurando siempre dos cosas: No se pasa del tamaño del búfer de destino y garantiza el carácter nulo final (\0), siempre que el tamaño del destino sea mayor a 0.
Añade la cadena de origen al final de la cadena de destino, asegurándose de que el resultado final esté terminado en un carácter nulo (\0) y que no exceda el tamaño máximo del búfer especificado.
Se utiliza para buscar la primera aparición de un carácter específico dentro de una cadena de texto. Si encuentra el carácter devuelve un puntero a la posición exacta de esa primera aparición dentro de la cadena y si no encuentra el carácter devuelve NULL.
Se utiliza para buscar la última aparición de un carácter específico dentro de una cadena de texto. Si encuentra el carácter devuelve un puntero a la posición exacta de esa última aparición dentro de la cadena y si no encuentra el carácter devuelve NULL.
Se utiliza para comparar dos cadenas de texto carácter por carácter, pero con un límite máximo de caracteres.
Se utiliza para localizar una subcadena dentro de otra cadena, pero limitando la búsqueda a un número específico de caracteres.
Se utiliza para duplicar una cadena existente reservando memoria automáticamente.
Se utiliza calloc para reservar espacio en memoria para un arreglo de elementos y realiza dos acciones principales: calcula el tamaño total multiplicando el número de elementos por el tamaño de cada uno. Inicializa a cero limpiando toda la memoria reservada, estableciendo cada bit en 0.
Escribe el mismo carácter en cada una de las posiciones de un bloque de memoria durante un número determinado de bytes.
Se utiliza para copiar un bloque de memoria de un lugar a otro, sin importar el tipo de datos que contenga.
Copia un bloque de memoria de un origen a un destino, con la característica crucial de que es segura incluso si ambas áreas de memoria se solapan.
Se utiliza para convertir una cadena de caracteres que representa un número en un valor de tipo entero.
Reserva memoria y devuelve una subcadena de caracteres de la cadena ‘s’. La subcadena comienza en el índice ‘start ’ y tiene una longitud máxima ‘len ’.
Reserva memoria y devuelve una nueva cadena de caracteres, formada por la concatenación de ‘s1’ y ‘s2’.
Reserva memoria y devuelve una copia de ‘s1’ con los caracteres de ‘set ’ eliminados al principio y al final.
Reserva memoria y devuelve un arreglo de cadenas obtenido al dividir la cadena ‘s’ en subcadenas utilizando el carácter ‘c’ como delimitador. Cada cadena del arreglo devuelto se reserva de manera independiente. El arreglo de punteros también se reserva dinámicamente. El arreglo devuelto debe terminar con un puntero a NULL.
Reserva memoria y devuelve una cadena que represente el valor del número entero recibido como argumento. Debe ser capaz de manejar números negativos
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. Se crea una nueva cadena para almacenar los resultados de las sucesivas aplicaciones de ‘f’.
Aplica la función ‘f’ a cada carácter de la string ‘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.
Envía el carácter ‘c’ al descriptor de archivo especificado.
Envía la cadena ‘s’ al descriptor de archivo especificado.
Envía la cadena ‘s’ al descriptor de archivo dado, seguido de un salto de línea.
Escribe el número entero ‘n’ en el descriptor de archivo dado.
Reserva memoria y devuelve un nuevo nodo. La variable ‘content’ se inicializa con el contenido del parámetro ‘content’. Mientras que la variable ‘next’ se inicializa con NULL.
Añade el nodo ‘new’ al principio de la lista ‘lst’.
Cuenta el número de nodos de una lista.
Devuelve el último nodo de la lista.
Añade el nodo ‘new’ al fina de la lista ‘lst’.
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.
Elimina y libera el nodo ‘lst’ dado y todos los consecutivos del mismo, utilizando la función ‘del’ y free. Al final, el puntero a la lista debe ser NULL.
Itera la lista ‘lst’ y aplica la función ‘f’ en el contenido de cada nodo.
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.
Primero deberas clonar este repositorio, usando el siguiente comando en tu terminal:
git clone git@vogsphere.42urduliz.com:vogsphere/intra-uuid-45ef1abf-9711-4cdf-9475-8c6fe45ca055-7378120-omarquez libft
cd libftLuego de clonar este repositorio asignandole libft como nombre, te dirijes a la carpeta con cd y ejecutas el comando make para compilar la libreria y crear el archivo libft.a.
Ahora podras utilizar esta libreria incluyendola en tus propios archivos .c de esta manera:
#include "libft.h"Cuando ya estes listo para compilar tu archivo .c lo puedes hacer de la siguiente manera:
// cc o tu compilador de preferencia:
cc main.c libft.a -I. -o programa- [elcodigoascii]https://elcodigoascii.com.ar/
- [online_c_compiler]https://www.onlinegdb.com/online_c_compiler
- [pythontutor]https://pythontutor.com/visualize.html#mode=edit
- [tutorialspoint]https://www.tutorialspoint.com/article/implement-your-own-itoa-in-c
- [medium]https://jraleman.medium.com/implementation-of-the-c-function-strtrim-1a1ea0c60b38
- [stackoverflow]https://stackoverflow.com/questions/7109964/creating-your-own-header-file-in-c
- [stackoverflow]https://stackoverflow.com/questions/4260109/differences-between-memchr-and-strchr
- [medium]https://medium.com/@BaldrTheKing/how-to-build-your-own-strlcat-function-928676489144
- [stackoverflow]https://stackoverflow.com/questions/18851835/create-my-own-memset-function-in-c
- [geeksforgeeks]https://www.geeksforgeeks.org/cpp/write-memcpy/