项目作者: caroldaniel

项目描述 :
This is my very own printf function implementarion
高级语言: C
项目地址: git://github.com/caroldaniel/42sp-cursus-ft_printf.git
创建时间: 2021-08-06T18:04:33Z
项目社区:https://github.com/caroldaniel/42sp-cursus-ft_printf

开源协议:

下载



ft_printf


42cursus’ project #3


The printf function is one of the most versatile and well-known functions in the C language. From a testing aid to tabulation method, printf is a very powerful and important tool in every dev’s kit. This project aims to recreate the behaviour of the original MacOS’s printf, including its basic error management, some of its flags, minimum field width stipulation and most of its basic conversions.




Final score


cado-car's

Completed + Bonus

cado-car's


Mandatory

A small description of the required conversion:

  • %c print a single character.
  • %s print a string of characters.
  • %p The void * pointer argument is printed in hexadecimal.
  • %d print a decimal (base 10) number.
  • %i print an integer in base 10.
  • %u print an unsigned decimal (base 10) number.
  • %x print a number in hexadecimal (base 16).
  • %% print a percent sign.


Bonus

Manage any combination of the following flags:

  • -0. and minimum field width with all conversions
  • Manage all the following flags: # +(yes, one of them is a space)


The project

Implementation files

Main functions

Conversion functions

Conversions & Flags & Expected Order

Conversion Description Project
c Single ascii character Mandatory
s String of characters NULL terminated Mandatory
p Pointer location converted to hexadecimal value Mandatory
d Decimal number Mandatory
i Integer in decimal base Mandatory
u Unsigned integer in decimal base Mandatory
x Unsigned number printed in lowercase hexadecimal base Mandatory
X Unsigned number printed in uppercase hexadecimal base Mandatory
% The ‘%’ ascii character Mandatory
o Unsigned number printed in octal base Extra
Flag Description Project
- Left align the argument passed Bonus 1
0 Add ‘0’ as a padding character in numeric conversions (single space is default) Bonus 1
. Precision definition, followed by a number Bonus 1
+ Add a plus sign (‘+’) in the front of positive numeric conversions Bonus 2
‘ ‘ Add a single space (‘ ‘) in the front of positive numeric conversions Bonus 2
# Add the corresponding prefix in front of x, X and o conversions Bonus 2
* Add a placeholder for numeric values that shall be passed through the variadic arguments Extra
Holder key Prefix and justification flags * Minimum Width * Precision * Conversion
% - , 0 , + , … 10, 5 , … ., .10, .5, … c, d, i, s, …
* : optional flags and definitions


Usage

Requirements

libftprintf requires a gcc compiler and some standard libraries.

Instructions

Clone this repository in your local computer:

  1. $> git clone https://github.com/caroldaniel/42sp-cursus_libft.git path/to/libftprintf

In your local repository, run make

  1. $> make

make suports 6 flags:

  • make all or simply make compiles printf in its mandatory format
  • make bonus compiles printf in its bonus format
  • make clean deletes the .o files generated during compilation
  • make fclean deletes the .o and the libftprintf.a library file generated
  • make re executes fclean and all in sequence, recompiling the library
  • make rebonus executes fclean and bonus in sequence, recompiling the library with the bonus functions

To use the libftprintf in your code you will need to include the header:

  1. #include "libftprintf.h"

When compiling your own code with libftprintf, don’t forget to use the flags:

  1. $> ... -lftprintf -L path/to/libftprintf.a -I path/to/libftprintf.h