March / 2020
The printf project is the coding of a function named "_printf()" that imitates to "printf()". This C language function is a powerful device for printing numbers and other things stored in variables. Located in the stdio.h library. You can find some of the basic features and functions in the manual 3 of "printf()".
_printf() is a function that performs formatted output conversion and print data, but what means that. Please, read about the variadic functions and go back later.
Its prototype was defined following:
int _printf(const char *format, ...);
Where format contains a string that will be print. This strings is composed by n arguments that will be replace by n tags definied inside the string.
Following, the variadic function format tags prototype is:
%[flags][length]specifier
Return value is the amount of chars printed (program successfully), see this tables:
| Specifier | Output |
|---|---|
| c | Character |
| d or i | Signed decimal integer |
| s | String of characters |
| b | unsigned decimal integer in binary |
| u | unsigned decimal integer |
| o | unsigned decimal integer in octal |
| x | unsigned decimal integer in hexadecimal lower case |
| X | unsigned decimal integer in hexadecimal upper case |
| p | address as hexadecimal (base 16) lower case |
| S | String including Non printable characters |
| r | reversed string |
| R | string in rot13 |
| % | Character |
- Printing the string "Example":
- Use:
_printf("%s", "Example"); - Output:
Holberton.
- print the singular character 'e':
- Use:
_printf("%c", e); - Output:
e
- Print the decimal number 5:
- Use:
_printf("%d", 5); - Output:
5
- Print the int number -98:
- Use:
_printf("%i", -98); - Output:
-98
Our printf function the Performs formatted Output Conversion And Print Data.
Header file. Include all prototypes functions used
- task_0.c
int print_c(va_list c) /* prints a char */
int print_s(va_list s) /* prints a string */
- task_1.c
int print_i(va_list i) /* prints an integer */
int print_d(va_list d) /* prints a decimal */
- task_3.c
int print_b(va_list b) /* prints an unsigned integer in binary (base 2) */
- task_4.c
int print_u(va_list u); /* prints an unsigned integer */
int print_o(va_list o); /* prints an unsigned integer in octal (base 8) */
int print_x(va_list x); /* prints an unsigned integer in hexadecimal (base 16) */
int print_X(va_list X); /* prints an unsigned integer in hexadecimal (base 16) */
- task_6.c
static unsigned long power(unsigned int x, unsigned int y) /* calculates an exponent */
int print_p(va_list p); /* prints a hexadecimal address (0x base 16) */
- task_7.c
int print_S(va_list S); /* prints a string with Non printable characters (ASCII code value hexadecimal) */
- task_14.c
print_r(va_list r); /* prints a reverse string */
- task_15.c
int print_R(va_list R); /* prints a string in rot13 */
On success returns an integer number of symbols printed not counting \0 for the string.
On failure returns error number (-1)
It's a collaboration between Crispthofer Rincon & Santiago Martinez, students (from cohort 11 - january 2020) of Software Engineering at Holberton School


