This project is about creating a simplified version of the printf function in C. The _printf function is a custom implementation of the C programming language's printf function, which is part of the standard library. The function is variadic, meaning it accepts a variable number of arguments.
The following functions and macros are used in this project:
write(man 2 write)malloc(man 3 malloc)free(man 3 free)va_start(man 3 va_start)va_end(man 3 va_end)va_copy(man 3 va_copy)va_arg(man 3 va_arg)
The code is compiled this way:
gcc -Wall -Werror -Wextra -pedantic -std=gnu89 *.cThe _printf function can be used similarly to the printf function. It takes a format string and a variable number of arguments, and writes the output to stdout (the standard output stream).
Here is a basic usage example:
#include "main.h"
int main(void)
{
_printf("Hello, world!\n");
return (0);
}The _printf function supports the following format specifiers:
%c: Character%s: String of characters%dor%i: Signed decimal integer%b: Unsigned binary%u: Unsigned decimal integer%o: Unsigned octal%x: Unsigned hexadecimal integer (lowercase)%X: Unsigned hexadecimal integer (uppercase)%S: Custom conversion specifier, prints the string. Non printable characters (0 < ASCII value < 32 or >= 127) are printed this way: \x, followed by the ASCII code value in hexadecimal (upper case - always 2 characters)%p: Pointer address%r: Custom conversion specifier, prints the reversed string%R: Custom conversion specifier, prints the Rot13'ed string
This project is a collaboration between : Oumaima NAANAA & Zidane ZAOUI