- Your project must be written in C.
- Your project must be written in accordance with the Norm.
- Your functions should not quit unexpectedly (segmentation fault, bus error, double free, etc) apart from undefined behaviors.
- All heap allocated memory space must be properly freed when necessary. No leaks will be tolerated.
- If the subject requires it, you must submit a Makefile which will compile your source files to the required output with the flags
-Wall
,-Wextra
and-Werror
, usecc
, and your Makefile must not relink. - Your Makefile must at least contain the rules
$(NAME)
,all
,clean
,fclean
andre
.
Program name | libftprintf.a |
---|---|
Turn in files | Makefile, *.h, */*.h, *.c, */*.c |
Makefile | NAME, all, clean, fclean, re |
External functs. | malloc, free, write, va_start, va_arg, va_copy, va_end |
Libft authorized | Yes |
Description | Write a library that contains ft_printf(), a function that will mimic the original printf() |
You have to recode the printf()
function from libc.
The prototype of ft_printf()
is:
int ft_printf(const char *, ...);
Here are the requirements:
- Don’t implement the buffer management of the original printf().
- Your function has to handle the following conversions:
cspdiuxX%
- Your function will be compared against the original printf().
- You must use the command
ar
to create your library.
Using the libtool
command is forbidden.
- Your
libftprintf.a
has to be created at the root of your repository.
You have to implement the following conversions:
%c
Prints a single character.%s
Prints a string (as defined by the common C convention).%p
The void * pointer argument has to be printed in hexadecimal format.%d
Prints a decimal (base 10) number.%i
Prints an integer in base 10.%u
Prints an unsigned decimal (base 10) number.%x
Prints a number in hexadecimal (base 16) lowercase format.%X
Prints a number in hexadecimal (base 16) uppercase format.%%
Prints a percent sign.