-
Notifications
You must be signed in to change notification settings - Fork 0
ft_printf_c
La función ft_printf es la implementación personalizada de printf. Esta función recibe una cadena de formato con posibles especificadores y una lista variable de argumentos, que se imprimen en la salida estándar según el formato especificado.
#include "ft_printf.h"Se incluye el archivo de cabecera ft_printf.h que contiene las declaraciones necesarias para esta implementación.
int ft_printf(const char *format, ...)-
const char *format: Cadena que contiene el texto y los especificadores de formato (como%d,%s, etc.). -
...: Lista variable de argumentos que se imprimirán según los especificadores de la cadena de formato.
- Inicializa una lista de argumentos variables con
va_start. - Recorre la cadena de formato carácter por carácter.
- Si encuentra un símbolo
%, llama aft_formatpara manejar el formato correspondiente. - Si no es un símbolo
%, llama aft_putcharpara imprimir el carácter actual. - Al final, llama a
va_endpara limpiar los recursos deva_list. - Devuelve el número total de caracteres impresos.
Esta es una función estática que se encarga de procesar el especificador de formato y determinar qué función auxiliar debe ser llamada (como ft_putstr, ft_putnbr, etc.).
static int ft_format(const char *format, va_list args)-
const char *format: El especificador de formato, como'c'o'd'. -
va_list args: La lista de argumentos que contiene los valores a imprimir.
- Compara el carácter de formato actual con los especificadores válidos (
c,s,p,d,i,u,x,X,%). - Según el formato, llama a la función auxiliar correspondiente (como
ft_putcharoft_putstr). - Si se encuentra un especificador desconocido, devuelve
-1indicando un error.
La función ft_printf maneja la impresión formateada de múltiples tipos de datos, y utiliza una lista variable de argumentos (va_list) para lograr una flexibilidad similar a la de la función estándar printf. La función auxiliar ft_format procesa los especificadores de formato para determinar cómo manejar cada tipo de dato.