Easy Tutorial
❮ C Function Fgetc C Examples Product Numbers ❯

C Library Function - printf()

C Standard Library - <stdio.h>

Description

The C library function int printf(const char *format, ...) sends formatted output to the standard output stdout.

The format of the printf() function call is:

printf("&lt;formatted string>", &lt;argument list>);

Declaration

Here is the declaration for the printf() function.

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

Parameters

-

format -- This is the string that contains the text to be written to the standard output stdout. It can include embedded format tags that are replaced by values specified in subsequent additional arguments and formatted as requested. The format tags properties are %[flags][width][.precision][length]specifier, detailed as follows:

Format Character Meaning
a, A Outputs a floating-point number in hexadecimal format (C99 added). Example: printf("pi=%a\n", 3.14); outputs pi=0x1.91eb86p+1.
d Outputs a signed decimal integer (positive numbers do not output a sign)
o Outputs an unsigned octal integer (does not output the prefix 0)
x, X Outputs an unsigned hexadecimal integer (does not output the prefix 0x)
u Outputs an unsigned decimal integer
f Outputs a floating-point number in decimal format
e, E Outputs a floating-point number in scientific notation
g, G Outputs a floating-point number in either decimal or scientific notation based on the shortest representation
c Outputs a single character
s Outputs a string
p Outputs a pointer address
lu 32-bit unsigned integer
llu 64-bit unsigned integer
Flags Description
- Left-align within the given field width; right alignment is the default (see width sub-specifier).
+ Forces to precede the result with a plus or minus sign (+ or -) even for positive numbers. By default, only negative numbers are preceded by a - sign.
space If no sign is going to be written, a blank space is inserted before the value.
# Used with o, x or X specifiers, the value is preceded with 0, 0x or 0X respectively for values different than zero. <br>Used with e, E and f, it forces the written output to contain a decimal point even if no digits would follow. By default, if no digits follow, no decimal point is written. <br>Used with g or G, the result is the same as with e or E, but trailing zeros are not removed.
0 Left-pads the number with zeroes (0) instead of spaces, where padding is specified (see width sub-specifier).
Width Description
(number) Minimum number of characters to be printed. If the value to be printed is shorter than this number, the result is padded with blank spaces. The value is not truncated even if the result is larger.
* The width is not specified in the format string, but as an additional integer value argument preceding the argument that has to be formatted.
.precision Description
.number For integer specifiers (d, i, o, u, x, X): precision specifies the minimum number of digits to be written. If the value to be written is shorter than this number, the result is padded with leading zeros. The value is not truncated even if the result is longer. A precision of 0 means that no character is written for the value 0. <br>For e, E and f specifiers: this is the number of digits to be printed after the decimal point. <br>For g and G specifiers: this is the maximum number of significant digits to be printed. <br>For s: this is the maximum number of characters to be printed. By default all characters are printed until the ending null character is encountered. <br>For c type: it has no effect. <br>When no precision is specified, the default is 1. If the period is specified without an explicit value for precision, 0 is assumed.
.* The precision is not specified in the format string, but as an additional integer value argument preceding the argument that has to be formatted.
length Description
h The argument is interpreted as a short int or unsigned short int (only applies to integer specifiers: i, d, o, u, x and X).
l The argument is interpreted as a long int or unsigned long int for integer specifiers (i, d, o, u, x and X), and as a wide character or wide character string for specifiers c and s.
L The argument is interpreted as a long double (only applies to floating-point specifiers: e, E, f, g and G).

-

additional arguments -- Depending on the format string, the function may expect a sequence of additional arguments, each containing a value to be inserted instead of each %-tag specified in the format parameter, if any. There should be the same number of these arguments as the number of %-tags that expect a value.

Return Value

On success, the total number of characters written is returned. On failure, a negative number is returned.

Example

The following example demonstrates the use of the printf() function.

#include <stdio.h>

int main ()
{
   int ch;

   for( ch = 75 ; ch <= 100; ch++ ) {
      printf("ASCII value = %d, character = %c\n", ch , ch );
   }

   return(0);
}

Let's compile and run the above program, which will produce the following result:

ASCII value = 75, character = K
ASCII value = 76, character = L
ASCII value = 77, character = M
ASCII value = 78, character = N
ASCII value = 79, character = O
ASCII value = 80, character = P
ASCII value = 81, character = Q
ASCII value = 82, character = R
ASCII value = 83, character = S
ASCII value = 84, character = T
ASCII value = 85, character = U
ASCII value = 86, character = V
ASCII value = 87, character = W
ASCII value = 88, character = X
ASCII value = 89, character = Y
ASCII value = 90, character = Z
ASCII value = 91, character = [
ASCII value = 92, character = \\
ASCII value = 93, character = ]
ASCII value = 94, character = ^
ASCII value = 95, character = _
ASCII value = 96, character = `
ASCII value = 97, character = a
ASCII value = 98, character = b
ASCII value = 99, character = c
ASCII value = 100, character = d

The following example outputs various formatted data:

#include <stdio.h>
int main()
{
   char ch = 'A';
   char str[20] = "www.tutorialpro.org";
   float flt = 10.234;
   int no = 150;
   double dbl = 20.123456;
   printf("Character is %c \n", ch);
   printf("String is %s \n" , str);
   printf("Float value is %f \n", flt);
   printf("Integer value is %d\n" , no);
   printf("Double value is %lf \n", dbl);
   printf("Octal value is %o \n", no);
   printf("Hexadecimal value is %x \n", no);
   return 0;
}

Execution output:

Character is A 
String is www.tutorialpro.org 
Float value is 10.234000 
Integer value is 150
Double value is 20.123456 
Octal value is 226 
Hexadecimal value is 96

Specifiers

-%d Decimal signed integer

-%u Decimal unsigned integer

-%f Floating point number

-%s String of characters

-%c Single character

-%p Value of a pointer

-%e Exponential format floating point number

-%x, %X Unsigned hexadecimal integer

-%o Unsigned octal integer

-%g Shorter of %e and %f

-%p Outputs a pointer

-%lu 32-bit unsigned integer

-%llu 64-bit unsigned integer

C Standard Library - <stdio.h>

❮ C Function Fgetc C Examples Product Numbers ❯