This repository contains all files for the printf project from School 42 Málaga cursus. The project consists of duplicating the printf()
function, part of the stdio.h
library.
About · Index · Requirements · Instructions · Testing
This project consists of duplicating the behavior of the C function printf()
. It is not necessary to implement the buffer management of the original function. It must handle the following parameters:
char
type variables.string
type variables.int
type variables.unsigned int
type variables.- hexadecimal
int
type variables (uppercase and lowercase). pointer
type variables.
You will find more details in the subject of the project.
The main obstacles during the execution of the project have been handling a variable number of parameters and the function ft_printf()
returning an int
.
To deal with the variable number of parameters entered, the macros va_list
, va_start
, va_arg
, and va_end
have been used. The ft_printf()
function calls the ft_format()
function when it finds the %
sign among the entered parameters. It then checks the next character in the string to call one of the functions that print the different variable types. To use this macro, the library <stdarg.h>
is included in the ft_printf.h
.
To handle the integer returned by ft_printf()
, a pointer is given in the format printing functions. In this way, the function handles the number of characters printed before continuing with the string sent by parameter. Example:
void ft_putchar_pf(char c, size_t *counter)
{
write(1, &c, 1);
(*counter)++; // increasing the pointer with each character printed
}
The different types of variables are printed using a function for each of the formats:
ft_printf_hex()
prints hexadecimal integers, using a string included in theft_printf.h
library. There is one string for uppercase and one for lowercase characters.ft_print_nbr()
recursively prints an integer, handling the maximum negative value with a conditional (if-else
) and casting the integer to characters.ft_print_putptr()
prints a pointer in hexadecimal format (lowercase), preceded by the string "0x".ft_print_unsigned()
prints anunsigned int
type variable.
The functions are written in C language and need the gcc
compiler, with <stdlib.h>
, <stdarg.h>
, and <unistd.h>
standard libraries to run.
To compile the project, go to its path and run:
For mandatory functions:
$ make
To delete all files generated with make, go to the path and run:
$ make fclean
To use this project in your code, simply include this header:
#include "ft_printf.h"
This function has been tested with Francinette.