El objetivo de este proyecto es bastante sencillo: reprogramar printf()
.
Aprenderás, principalmente, a utilizar un número variable de argumentos.
Warning
Este proyecto ha sido implementado directamente sobre el proyecto Libft (submódulo).
Aquí, se está usando directamente la libreríalibft.a
para compilar el proyecto.
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, % ). |
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:
#
,+
(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.