C++ printf()

The printf() function in C++ is used to write a formatted string to stdout.

printf() prototype

int printf( const char* format, ... );

The printf() function writes the string pointed to by format to stdout. The string format may contain format specifiers starting with % which are replaced by the values of variables that are passed to the printf() function as additional arguments.

It is defined in <cstdio> header file.

printf() Parameters

  • format: Pointer to a null terminated string that is written to the file stream. It consists of characters along with optional format specifiers starting with %.

    The format specifiers are replaced by the values of respective variables that follows the format string.

    The format specifier has the following parts:

    • A leading % sign
    • Flags: Optional one or more flags that modifies the conversion behavior.
      • - : Left justify the result within the field. By default it is right justified.
      • + : The sign of the result is attached to the beginning of the value, even for positive results.
      • Space: If there is no sign, a space is attached to the beginning of the result.
      • # : An alternative form of the conversion is performed.
      • 0 : It is used for integer and floating point number. Leading zeros are used to pad the numbers instead of space.
    • Width: An optional * or integer value used to specify minimum width field.
    • Precision : An optional field consisting of a . followed by * or integer or nothing to specify the precision.
    • Length : An optional length modifier that specifies the size of the argument.
    • Specifier: A conversion format specifier. The available format specifiers are as follows:
      Format Specifier Description
      % Prints %
      c Writes a single character
      s Writes a character string
      d or i Converts a signed integer to decimal representation
      o Converts an unsigned integer to octal representation
      X or x Converts an unsigned integer to hexadecimal representation
      u Converts an unsigned integer to decimal representation
      F or f Converts floating-point number to the decimal representation
      E or e Converts floating-point number to the decimal exponent notation
      A or a Converts floating-point number to the hexadecimal exponent
      G or g Converts floating-point number to either decimal or decimal exponent notation
      n Returns the number of characters written so far by this call to the function. The result is written to the value pointed to by the argument
      p Writes an implementation defined character sequence defining a pointer.

      So the general format of format specifier is: %[flags][width][.precision][length]specifier

  • … : Other additional arguments specifying the data to be printed. They occur in a sequence according to the format specifier.

printf() Return value

If successful, the printf() function returns number of characters written. On failure it returns a negative value.

Example 1: How printf() function works

#include <cstdio>

int main()
{
    int x = 5;
    char my_name[] = "Lincoln";

    printf("x = %d \n", x);
    printf("My name is %s \n", my_name);
    
    return 0;
}

When you run the program, the output will be:

x = 5 
My name is Lincoln

Example 2: More examples on printf()

#include <cstdio>

int main()
{
    char ch = 'a';
    float a = 5.0, b = 3.0;
    int x = 10;

    printf("%.3f / %.3f = %.3f \n", a,b,a/b);
    printf("Setting width %*c \n",5,ch);
    printf("Octal equivalent of %d is %o \n",x,x);

    return 0;
}

When you run the program, the output will be:

5.000 / 3.000 = 1.667 
Setting width     a 
Octal equivalent of 10 is 12