A formatted output conversion C program completed as part of the low-level
programming and algorithm track at Holberton School. The program is a pseudo-
recreation of the C standard library function, printf
.
The _printf
function was coded on an Ubuntu 14.04 LTS machine with gcc
version 9.4.0
To use the _printf
function, assuming the above dependencies have been installed,
compile all .c
files in the repository and include the header main.h
with
any main function.
Example main.c
:
#include "main.h"
int main(void)
{
_printf("Hello, World!");
return (0);
}
Compilation:
$ gcc *.c -o tester
Output:
$ ./tester
Hello, World!
$
The function _printf
writes output to standard output. The function writes
under the control of a format
string that specifies how subsequent arguments
(accessed via the variable-length argument facilities of stdarg
) are
converted for output.
Prototype: int _printf(const char *format, ...);
Upon successful return, _printf
returns the number of characters printed
(excluding the terminating null byte used to end output to strings). If an
output error is encountered, the function returns -1
.
The format
string argument is a constant character string composed of zero
or more directives: ordinary characters (not %
) which are copied unchanged
to the output stream; and conversion specifications, each of which results in
fetching zero or more subsequent arguments. Conversion specification is
introduced by the character %
and ends with a conversion specifier. In
between the %
character and conversion specifier, there may be (in order)
zero or more flags, an optional minimum field width, an optional
precision and an optional length modifier. The arguments must correspond
with the conversion specifier, and are used in the order given.
Example main.c
:
int main(void)
{
_printf("%d\n", 9);
}
Output:
9
The int
argument is converted to an unsigned char
.
Example main.c
:
int main(void)
{
_printf("%c\n", 48);
}
Output:
0
The const char *
argument is expected to be a pointer to a character array
(aka. pointer to a string). Characters from the array are written starting
from the first element of the array and ending at, but not including, the
terminating null byte (\0
).
Example main.c
:
int main(void)
{
_printf("%s\n", "Hello, World!");
}
Output:
Hello, World!
A %
is written. No argument is converted. The complete conversion
specification is %%
.
Example:
int main(void)
{
_printf("%%\n");
}
Output:
%
This project is licensed under the MIT License - see the <LICENSE>file for details.
The _printf
function emulates functionality of the C standard library
function printf
. This README borrows from the Linux man page
printf(3).
This program was written as part of the curriculum for Holberton School. Holberton School is a campus-based full-stack software engineering program that prepares students for careers in the tech industry using project-based peer learning. For more information, visit this link.