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 20.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.
The conversion specifier (introduced by the character %) is a character that
specifies the type of conversion to be applied. The _printf function
supports the following conversion specifiers:
The int argument is converted to signed decimal notation.
Example main.c:
int main(void)
{
_printf("%d\n", 7);
}
Output:
7
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:
%
To print the address of Holberton School in the format "972 Mission St., San Francisco, CA 94103" where street, city and state are pointers to strings:
Example main.c:
#include "main.h"
int main(void)
{
char *street = "Mission St.", *city = "San Francisco", *state = "CA";
_printf("%d %s, %s, %s %d\n", 972, street, city, state, 94103);
}
Output:
972 Mission St., San Francisco, CA 94103
- Frank Quispe <QuispeFrank>
- Leslie Paz <LesLor>
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.
