Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/colmiik/ft_printf

A simple recreation of C's printf
https://github.com/colmiik/ft_printf

42school printf

Last synced: about 1 month ago
JSON representation

A simple recreation of C's printf

Awesome Lists containing this project

README

        


Banner (claro)
Banner (oscuro)


This is a straightforward project: recode printf().



42 (oscuro)


Tiempo

---

# Mandatory part


Program name
libftprintf.a


Turn in files
Makefile, *.h, */*.h, *.c, */*.c


Makefile
NAME, all, clean, fclean, re


Arguments
stack a: a list of integers


External functions
write(), malloc(), free(), 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()

## Observations

You have to recode the `printf()` function from `libc`.

The prototype of ``ft_printf()`` is:

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

## 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.

# Bonus part

You don’t have to do all the bonuses.
## Bonus list:
- Manage any combination of the following flags: `-0.` and the field minimum width
under all conversions.
- Manage all the following flags: `# +` (Yes, one of them is a space)