C++ printf is a formatting function that is used to print a string to stdout. The basic idea to call printf in C++ is to provide a string of characters that need to be printed as it is in the program. The printf in C++ also contains a format specifier that is replaced by the actual value during execution.

Want a Top Software Development Job? Start Here!

Full Stack Developer - MERN StackExplore Program
Want a Top Software Development Job? Start Here!

The C++ Printf Prototype

The C++ printf prototype is:

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

The printf prototype is defined in the <cstdio> header file. When you use the printf() function, it prints the string pointed out by the format to the standard output stdout. The format can also contain some specifiers that start with a % and replace values of variables with the printf() function. To put it simply, they work as additional arguments to the printf() function.

The C++ Printf Parameters

The C++ prototype contains the following parameters:

  • const char: Any text to be printed on the console as is
  • format: A pointer to the string with the optional format specifier starting with the %d sign.

Return Value of Printf in C++

C++ printf returns:

  • The number of characters written if successful
  • A negative value, if failed

General Form of Format Specifier

The general form of a C++ printf format specifier is as below:

%[flags][width][.precision][length]specifier

In the above format:

  • %: This is the leading sign that denotes the beginning of the format specifier
  • Flags: An optional one or more values that modifies the conversion behavior. The available values are:
    • -: The result of printf function is by default right justified. This value left justifies the results
    • +: This will add a sign to the values of the result, even for the positive values
    • Space: If there is no sign attached to a value, this will attach a space to the beginning of the result
    • #: This leads to an alternative form of conversion being performed
    • 0: You use this flag for integers and floating-point numbers to pad the values with zeros instead of space
  • Width: An optional field that accepts * or an integer value to determine the minimum width field
  • Precision: An optional argument specifies precision by accepting a *, integer value, or nothing after a ‘.’ symbol
  • Length: An optional parameter that defines the size of the argument
  • Specifier: This field accepts a conversion format specifier

Learn From The Best Mentors in the Industry!

Automation Testing Masters ProgramExplore Program
Learn From The Best Mentors in the Industry!

Format Specifiers Used in C++ Printf

Printf in C++ can accept the following format specifiers.

Specifier

Description

%

Prints the % sign

c

Writes a single character to stdout

s

Writes a string to stdout

d or i

Transforms a signed integer to a decimal representation

o

Displays an unsigned integer using an octal representation

x or X

Transforms an unsigned integer to a hexadecimal representation

u

Displays an unsigned integer using a decimal representation

f or F

Turns a floating-point number into a decimal representation

e or E

Transforms a floating-point number to a decimal exponent notation

a or A

Displays a floating-point number using a hexadecimal exponent

g or G

Displays a floating-point number using decimal or decimal exponent notation

n

Returns the number of characters written by far using this call function. It writes the result to the value pointed by the argument.

p

A pointer that points to the implementation-defined character sequence

Prepare Yourself to Answer All Questions!

Automation Testing Masters ProgramExplore Program
Prepare Yourself to Answer All Questions!

Examples of C++ Printf() Function

Now that you know the fundamentals of C++ printf, look at some examples that will give you a better understanding of how the printf() function in C++ works.

Example 1

In this example, you will simply display the value of an integer using %d and write a string to stdout using the %s format specifiers.

#include <cstdio>

int main(){

    int i = 9;

    char name[] = "Simplilearn";

    printf("i = %d \n", i);

    printf("Welcome to %s \n", name);    

    return 0;

}

Output:

C_Plus_Plus_Printf_Function_1.

Example 2

In this example, you will use various format specifiers from the above table to define the conversion behavior and get the result in the desired format.

#include <cstdio>

int main(){

    char c = 'S';

    float x = 7.0, y = 9.0;

    double d = 6.548;

    int i = 50;

    printf("The float division is : %.3f / %.3f = %.3f \n", x,y,x/y);

    printf("The double value is : %.4f \n", d);

    printf("Setting the width of c : %*c \n",3,c);

    printf("The octal equivalent of %d is %o \n",i,i);

    printf("The hex equivalent of %d is %x \n",i,i);

    return 0;

}

Output:

C_Plus_Plus_Printf_Function_2

Want a Top Software Development Job? Start Here!

Full Stack Developer - MERN StackExplore Program
Want a Top Software Development Job? Start Here!

C++ Printf Vs. Sprintf

The Sprintf() function in C++ is almost similar to the printf() function with a single major difference. While the C++ printf writes to the standard output, the sprintf writes the output to a string buffer. The sprintf() function prototype is:

int sprintf(char * buffer, const char * format, ...);

In the above prototype, the parameters are:

  • Buffer: Pointer to a buffer where the results will be written
  • Format: Pointer to a null-terminated string written to the file stream

Example of C++ Stringf() Function

In the below example, you will write a string to a buffer using the sprintf function and output the formatted string. You will also display the total number of characters written to the buffer.

#include <cstdio>

#include <iostream>

using namespace std;

int main(){

    char buf[100];

    int return_Val;

    char my_name[] = "Simplilearn";

    char topic[] = "tutorials";

    return_Val = sprintf(buf, "Welcome to %s you can read various programming %s here!!", my_name, topic);

    cout << buf << endl;

    cout << "Total characters written are: " << return_Val << endl;

    return 0;

}

Output:

C_Plus_Plus_Printf_Function_3

Printf Vs. Cout in C++

The C++ printf() function is usually used in C programming but can also run in C++. However, the cout is specifically an addition in C++. The table below displays the significant differences between the C++ printf and cout.

C++ Printf

C++ Cout

Most usage

C language

C++ language

Object of

<cstdio> header file

<iostream> header file

Format specifier

Takes specifier

It does not take specifier

Return value

Returns the number of characters if successful and a negative value if unsuccessful

It does not return any value

Type safe

Not type safe in input parameters

Type safe in input parameters

Unleash a High-paying Automation Testing Job!

Automation Testing Masters ProgramExplore Program
Unleash a High-paying Automation Testing Job!

Example of C++ Cout

In the example below, you will see the use of C++ printf and cout simultaneously to see the difference.

#include <iostream>

using namespace std;

int main() {

   char c = 'S';

   cout<< "The value of c : " << c;

   printf("\nThe value of c : %c", c);  

   return 0;

}

Output:

C_Plus_Plus_Printf_Function_4.

Conclusion

You learned everything about the C++ printf() function in this article. You have also seen different format specifiers that you can use to format the results and use them in examples. Now it's time to use the other specifiers too. If you want to learn more such fundamental concepts of C++ programming, you can refer to Simplilearn's C++ Tutorial for Beginners. The tutorial is designed for beginners and covers all the basic concepts in detail. 

If you want to pursue a career in web development, our Full-Stack Web Development Course might suit you. The course offers hours of applied learning and online learning materials to help you grasp multiple web development programming languages that can help you excel in the field.

Have any questions for us? Mention them as comments, and our experts will get back to you on the same ASAP!