Recode printf
with identical behaviour as the original and assignable file directory.
malloc
, free
, write
, va_start
, va_arg
, va_copy
, va_end
All other functions must be self programmed.
The project is complicated as the number of parameters is indefinite. We use variadic arguments in this case.
ft_printf must achieve the following mandatory requirements:
- Manage the following conversions:
s
,p
,d
,i
,u
,x
,X
&c
- Manage
%%
- Manage the flags
#
,0
,-
,+
- Manage the minimum field-width
- Manage the precision
.
The function must conform to 42's norm.
The function cannot leak. All errors must be handled carefully. In no way can the function quit in an unexpected manner (Segmentation fault, bus error, double free, etc).
To compile, run make
. This will compile libftprintf.a. To use, include ft_printf.h
(located inside includes directory) and use just like printf
:
#include "ft_printf.h"
int main(void)
{
ft_printf_fd(1, "%s, %s!\n", "Hello", "world");
return (0);
}
Then compile with a program:
gcc -Wall -Werror -Wextra main.c libftprintf.a -I includes