# C++ Programming/Code/Standard C Library/Functions/printf
## printf

| Syntax | #include <cstdio> int printf( const char *format, ... ); cout<<printf; |
The printf function prints output to stdout, according to format and other arguments passed to printf. The string format consists of two types of items - characters that will be printed to the screen, and format commands that define how the other arguments to printf are displayed. Basically, you specify a format string that has text in it, as well as "special" characters that map to the other arguments of printf. For example, this code
displays the following output:
The %s means, "insert the first argument, a string, right here." The %d indicates that the second argument (an integer) should be placed there. There are different %-codes for different variable types, as well as options to limit the length of the variables and whatnot.
| Control Character | Explanation |
| %c | a single character |
| %d | a decimal integer |
| %i | an integer |
| %e | scientific notation, with a lowercase "e" |
| %E | scientific notation, with an uppercase "E" |
| %f | a floating-point number |
| %g | use %e or %f, whichever is shorter |
| %G | use %E or %f, whichever is shorter |
| %o | an octal number |
| %x | unsigned hexadecimal, with lowercase letters |
| %X | unsigned hexadecimal, with uppercase letters |
| %u | an unsigned integer |
| %s | a string |
| %ls | a wide string |
| %x | a hexadecimal number |
| %p | a pointer |
| %n | the argument shall be a pointer to an integer into which is placed the number of characters written so far |
| %% | a percent sign |
A field-length specifier may appear before the final control character to indicate the width of the field:
* h, when inserted inside %d, causes the argument to be a short int.
* l, when inserted inside %d, causes the argument to be a long.
* l, when inserted inside %f, causes the argument to be a double.
* L, when inserted inside %d or %f, causes the argument to be a long long or long double respecively.
An integer placed between a % sign and the format command acts as a minimum field width specifier, and pads the output with spaces or zeros to make it long enough. If you want to pad with zeros, place a zero before the minimum field width specifier:
You can also include a precision modifier, in the form of a .N where N is some number, before the format command:
The precision modifier has different meanings depending on the format command being used:
* With %e, %E, and %f, the precision modifier lets you specify the number of decimal places desired. For example, %12.6f will display a floating number at least 12 digits wide, with six decimal places.
* With %g and %G, the precision modifier determines the maximum number of significant digits displayed.
* With %s, the precision modifier simply acts as a maximum field length, to complement the minimum field length that precedes the period.
All of printf's output is right-justified, unless you place a minus sign right after the % sign. For example,
will display a floating point number with a minimum of 12 characters, 4 decimal places, and left justified. You may modify the %d, %i, %o, %u, and %x type specifiers with the letter l and the letter h to specify long and short data types (e.g. %hd means a short integer). The %e, %f, and %g type specifiers can have the letter l before them to indicate that a double follows. The %g, %f, and %e type specifiers can be preceded with the character '#' to ensure that the decimal point will be present, even if there are no decimal digits. The use of the '#' character with the %x type specifier indicates that the hexidecimal number should be printed with the '0x' prefix. The use of the '#' character with the %o type specifier indicates that the octal value should be displayed with a 0 prefix.
Inserting a plus sign '+' into the type specifier will force positive values to be preceded by a '+' sign. Putting a space character ' ' there will force positive values to be preceded by a single space character.
You can also include constant escape sequences in the output string.
The return value of printf is the number of characters printed, or a negative number if an error occurred.

### Related topics

    fprintf - puts - scanf - sprintf