Libft

Description

Libft: Creando tu propia biblioteca en C

Este proyecto es uno de los primeros pasos prácticos en el mundo de la programación a bajo nivel: desarrollar tu propia biblioteca de funciones en C, tal como se hace en el cursus de 42Madrid. La idea no es solo copiar funciones de libc, sino entender cómo funcionan, replicarlas y aprender buenas prácticas de programación y gestión de memoria.

🌐 ¿De qué va Libft?

Libft consiste en programar funciones básicas que serán la base para proyectos futuros en el cursus. Es una oportunidad para:

  • Familiarizarte con punteros y manejo de memoria

  • Aprender a modularizar código

  • Practicar compilación y creación de bibliotecas estáticas (libft.a)

  • Entender cómo las funciones de C estándar están construidas bajo el capó

En pocas palabras, Libft es tu caja de herramientas personalizada en C.


🧩 Objetivo del proyecto

  • Crear una biblioteca en C con funciones de uso general.

  • Las funciones replicarán comportamientos de libc o complementarán funciones útiles de manejo de strings y memoria.

  • Todo debe ser modular, limpio y cumpliendo los estándares de compilación de 42 (-Wall -Werror -Wextra).

  • No se permiten variables globales, y cualquier función auxiliar debe declararse static dentro de su archivo correspondiente.


⚙️ Consideraciones técnicas

  • Prohibido usar libtool; debes usar el comando ar para generar la librería.

  • No entregar archivos innecesarios.

  • Todas las funciones deben seguir los prototipos originales de libc, pero con prefijo ft_ (ej: strlenft_strlen).


📝 Parte 1: Replicando funciones de libc

En esta sección, debes recrear funciones de la biblioteca estándar con tus propios implementaciones:

isalpha toupper
isdigit tolower
isalnum strchr
isascii strrchr
isprint strncmp
strlen memchr
memset memcmp
bzero strnstr
memcpy atoi
memmove calloc
strlcpy strdup
strlcat

Cada función debe comportarse exactamente como su versión original.


📝 Parte 2: Funciones adicionales

Aquí se desarrollan funciones no incluidas en libc o con comportamiento diferente, útiles para manipulación de strings y números:

ft_substr ft_strjoin
ft_strtrim ft_split
ft_itoa ft_strmapi
ft_striteri ft_putchar_fd
ft_putstr_fd ft_putendl_fd
ft_putnbr_fd

Estas funciones te enseñan a manejar memoria dinámicamente, manipular strings y escribir utilidades que harán tu código más modular.


🌟 Bonus: Listas enlazadas

Una vez que domines strings y memoria, es hora de pasar a listas enlazadas:

typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
  • content: guarda cualquier tipo de información (void*)

  • next: apunta al siguiente nodo o NULL si es el último

Funciones a implementar para gestionar listas fácilmente:

ft_lstnew ft_lstadd_front
ft_lstsize ft_lstlast
ft_lstadd_back ft_lstdelone
ft_lstclear ft_lstiter
ft_lstmap

Aprender listas es clave para estructuras de datos más complejas que verás más adelante.


🚀 Proyecto y entrega

  • Se entrega un Makefile que compila la librería estática libft.a

  • Incluye todas las funciones desarrolladas en el proyecto

  • El proyecto se realiza cumpliendo todos los requisitos del cursus

⚠️Importante

Este proyecto fue adaptado y reorganizado: al tratarse de una librería, he modificado su estructura separando las funciones por categorías para una mejor organización. Además, he incorporado las funciones get_next_line y ft_printf —dos proyectos adicionales del cursus de 42Madrid— con el objetivo de facilitar su uso y hacer más cómoda la integración de la librería en futuros proyectos.

💻 Puedes ver el código completo en GitHub.


🏁 Conclusión

Libft es mucho más que un simple ejercicio de C. Te enseña a:

  • Comprender cómo funciona la biblioteca estándar

  • Manejar memoria y punteros con responsabilidad

  • Modularizar y estructurar código

  • Crear tu propia caja de herramientas reutilizable

Perfecto para consolidar bases de programación en C antes de lanzarte a proyectos más complejos en 42Madrid 😄


Details
  • Date: 2022-09-17
  • Categories: C - Desarrollo
  • Código Fuente goldcod3/Libft