Métodos
42 (I): libft, construyendo la caja de herramientas
El primer proyecto de 42: reescribir funciones básicas de C sin librerías.
2 min de lectura
Lo primero que aprendes en 42 es que no hay nada preparado. Ni printf, ni strlen, ni ninguna librería (una colección de funciones que otros ya han escrito): si la necesitas, te la escribes. Y la primera entrega del curso, libft, es justo eso: reescribir una buena parte de la librería estándar de C desde cero. Un aviso antes de empezar: por norma de la escuela no comparto código de los proyectos, así que en esta serie contaré el planteamiento, los problemas y lo que saqué de cada uno, nunca la solución.
El problema
Sobre el papel, volver a escribir funciones conocidas parece pesado pero sencillo. En la práctica, es el proyecto donde más fundamentos he aprendido de golpe. La lista pedida superaba la cincuentena de funciones: memoria (memset, memcpy, calloc...), cadenas de texto, conversión de caracteres y, como parte opcional, listas enlazadas (cadenas de datos donde cada pieza apunta a la siguiente). Cada una con sus casos límite: cadenas vacías, bloques que no cuadran, tamaños que se pasan de lo pedido. Y por encima de todo, el verdadero tema de fondo: entender malloc de verdad —en qué momento reserva memoria, cuándo hay que liberarla y qué pasa cuando se te olvida.
Cómo lo abordé
Me repartí el trabajo en tres bloques: primero las funciones de memoria y de cadenas más cortas, después las que construyen cosas nuevas (substr, split, strjoin, itoa), y al final el bonus con las listas enlazadas. Todo se compila en una librería estática (un fichero que se adjunta al programa al compilarlo) con un Makefile —el fichero que dice cómo compilarlo todo—, y eso también fue aprendizaje: reglas, dependencias y un fclean que lo deje todo limpio. Según avanzaba probaba cada función con un main de pruebas propio, porque una función que compila no es una función que funciona. El repositorio, 42_libft, quedó con el código en src/, la cabecera en include/ y el Makefile en la raíz; después lo integré dentro del repositorio general del curso, 42_Cursus.
Qué me llevé
Dos cosas. La primera: nunca más miraré strlen con los mismos ojos. Detrás de cada función banal hay decisiones sobre memoria y tipos que ahora entiendo. La segunda: disciplina. La norma de la escuela obliga a un estilo estricto y a gestionar toda la memoria sin fugas (memoria que se reserva y no se devuelve); al principio sangra, pero al cabo de un par de semanas ya lo haces sin pensar. libft no tiene nada de glamuroso: nadie verá esa librería fuera de clase. Pero es la caja de herramientas con la que he escrito todo lo que vino después —el siguiente paso fue leer ficheros con get_next_line, leer ficheros línea a línea—, y se nota cada vez que un proyecto nuevo compila a la primera.