Format specifiers in C

The format specifiers are used in C for input and output purposes. Using this concept the compiler can understand that what type of data is in a variable during taking input using the scanf() function and printing using printf() function. Here is a list of format specifiers.

Format SpecifierType
%dSigned integer
%e or %EScientific notation of floats
%fFloat values
%g or %GSimilar as %e or %E
%hiSigned integer (short)
%huUnsigned Integer (short)
%iUnsigned integer
%l or %ld or %liLong
%LfLong double
%luUnsigned int or unsigned long
%lli or %lldLong long
%lluUnsigned long long
%oOctal representation
%uUnsigned int
%x or %XHexadecimal representation
%nPrints nothing
%%Prints % character

These are the basic format specifiers. We can add some other parts with the format specifiers. These are like below −

  • A minus symbol (-) sign tells left alignment

  • A number after % specifies the minimum field width. If string is less than the width, it will be filled with spaces

  • A period (.) is used to separate field width and precision


 Live Demo

#include <stdio.h>
main() {
   char ch = 'B';
", ch); //printing character data    //print decimal or integer data with d and i    int x = 45, y = 90;    printf("%d
", x);    printf("%i
", y);    float f = 12.67;    printf("%f
", f); //print float value    printf("%e
", f); //print in scientific notation    int a = 67;    printf("%o
", a); //print in octal format    printf("%x
", a); //print in hex format    char str[] = "Hello World";    printf("%s
", str);    printf("%20s
", str); //shift to the right 20 characters including the string    printf("%-20s
", str); //left align    printf("%20.5s
", str); //shift to the right 20 characters including the string, and print string up to 5 character    printf("%-20.5s
", str); //left align and print string up to 5 character }


Hello World
Hello World
Hello World

We can use these format specifiers for the scanf() function also in the same manner. So we can take the input from scanf() like above how we have printed.