This group project focuses on implementing a custom version of the printf function in C, handling various conversion specifiers and custom functionalities. Below are the tasks for this project:
0. I'm not going anywhere. You can print that wherever you want to. I'm here and I'm a Spur for life
Write a function that produces output according to a format.
- Prototype:
int _printf(const char *format, ...);
- Returns: the number of characters printed (excluding the null byte used to end output to strings).
- Write output to stdout, the standard output stream.
- Format is a character string composed of zero or more directives. See
man 3 printf
for more detail. - Handle the following conversion specifiers:
c
,s
,%
. - You don’t have to reproduce the buffer handling of the C library printf function.
- You don’t have to handle the flag characters, field width, precision, or length modifiers.
Handle the following conversion specifiers: d
, i
.
- You don’t have to handle the flag characters, field width, precision, or length modifiers.
Handle the following custom conversion specifier:
b
: the unsigned int argument is converted to binary.
Handle the following conversion specifiers: u
, o
, x
, X
.
- You don’t have to handle the flag characters, field width, precision, or length modifiers.
Use a local buffer of 1024 chars to call write as little as possible.
Handle the following custom conversion specifier:
S
: prints the string.- Non-printable characters (0 < ASCII value < 32 or >= 127) are printed as \x followed by the ASCII code value in hexadecimal (upper case - always 2 characters).
6. How is the world ruled and led to war? Diplomats lie to journalists and believe these lies when they see them in print
Handle the following conversion specifier: p
.
- You don’t have to handle the flag characters, field width, precision, or length modifiers.
Handle the following flag characters for non-custom conversion specifiers:
+
space
#
Handle the following length modifiers for non-custom conversion specifiers:
l
h
- Conversion specifiers to handle:
d
,i
,u
,o
,x
,X
.
Handle the field width for non-custom conversion specifiers.
Handle the precision for non-custom conversion specifiers.
Handle the 0 flag character for non-custom conversion specifiers.
12. Every time that I wanted to give up, if I saw an interesting textile, print whatever, suddenly I would see a collection
Handle the - flag character for non-custom conversion specifiers.
Handle the following custom conversion specifier:
r
: prints the reversed string.
Handle the following custom conversion specifier:
R
: prints the rot13'ed string.
All the above options work well together.
This README provides a clear description of the tasks and the organization of your project.