Este proyecto ha sido creado como parte del currículo de 42 por cescobio.
***++
Printf es el segundo proyecto individual del cursus de 42Madrid. Se trata de una reimplementación de la función estándar printf del lenguaje C. El objetivo del proyecto es comprender en profundidad:
- El funcionamiento de las funciones variádicas
- El manejo de especficadores de formato
- La escritura en bajo nivel mediante
write - La gestión de tipos y memoria en C.
Esta implementación reproduce el comportamiento esperado de printf para los especificadores solicitados, gestionando correctamente casos límite como punteros o cadenas nulas para evitar comportamientos indefinidos.
La funcion devuelve el número total de caracteres impresos, al igual que la implementación original.
El proyecto se entrega en forma de biblioteca estática llamada libftprintf.a, diseñada para ser reutilizada en otros proyectos en C.
ft_printf.c- Recorre la cadena
- Detecta el carácter %
- Delega el procesamiento al móulo de formateo
ft_format.c- Recibe el especificador de formato
- Determina que función invocar
- Funciones de impresión por tipo
%c: imprime un carácter →ft_print_char.c%s: imprime una cadena (manejo de NULL → (null)) →ft_print_string.c%p: imprime una dirección de memoria →ft_print_pointer.c%d/%i: imprime enteros con signo →ft_print_int.c%u: imprime enteros sin signo →ft_print_unsigned.c%x: imprime números hexadecimales en minúsculas →ft_print_hex.c%X: imprime números hexadecimales en mayúsculas →ft_print_hex_upper.c%%: imprime el símbolo %
Para compilar la librería, ejecutar:
make
Esto generará el archivo libftprintf.a.
Eliminar los archivos objeto generados durante la compilación:
make clean
Eliminar los archivos objeto y la librería:
make fclean
Recompilar completamente el proyecto:
make re
Incluir el archivo de cabecera en el código:
#include "ft_printf.h"
Compilar el programa enlazando la librería:
cc main.c -L. -lftprintf
ft_printf("ft_printf devuelve: %s %d\n", "hola", 4);
man 3 printfman stdargman 2 write- Funciones variádicas
- Tester libft