/ft_printf

Porque putnbr() y putstr() no son suficientes.

Primary LanguageC

Banner (claro) Banner (oscuro)

El objetivo de este proyecto es bastante sencillo: reprogramar printf().

Aprenderás, principalmente, a utilizar un número variable de argumentos.


42 (oscuro) Tiempo

Warning
Este proyecto ha sido implementado directamente sobre el proyecto Libft (submódulo).
Aquí, se está usando directamente la librería libft.a para compilar el proyecto.

Parte obligatoria

Nombre del programa libftprintf.a
Archivos a entregar Makefile, *.h, */*.h, *.c, */*.c
Makefile NAME, all, clean, fclean, re
Elementos autorizados write(), malloc(), free(), va_start, va_arg, va_copy, va_ends
¿Libft permitido? Sí.
Descripción Escribe una librería que contenga la función ft_printf() que imite la función printf() original.

El prototipo de ft_printf() es:

int ft_printf(char const *, ...);

Aquí tienes los requisitos:

  • No implementes la gestión del buffer del printf() original.
  • Deberás implementar las siguientes conversiones: cspdiuxX%.
  • Tu función se comparará con el printf() original.
  • Tienes que usar el comando ar para crear tu librería (libtool está prohibido).
  • Tu archivo libftprintf.a deberá ser creado en la raiz de tu repositorio.

Tienes que implementar las siguientes conversiones:

Conversión Acción
%c Imprime un solo carácter.
%s Imprime un string (como se define por defecto en C).
%p Imprime un puntero void * en formato hexadecimal.
%d Imprime un número decimal (base 10).
%i Imprime un número entero (base 10).
%u Imprime un número decimal (base 10) sin signo.
%x Imprime un número hexadecimal (base 16) en minúsculas.
%X Imprime un número hexadecimal (base 16) en mayúsculas.
%% Imprime el símbolo del porcentaje (es decir, %).

Parte bonus

No es necesario hacer todos los bonus.

  • Gestiona cualquier combinación de los siguientes flags: -0. y el ancho mínimo (field minimum width) bajo todas las conversiones posibles.
  • Gestiona todos los siguientes flags: #, y + (uno de ellos es un espacio).

Note
Piensa en la implementación de las características extras desde el principio.
De esta forma, evitarás los peligros de un enfoque ingenuo.