Custom Search
Home           C        C++       C#      Java        SQL
C Format Specifier
The Format specifier is a string used in the
formatted input and output functions. The
format string determines the format of the
input and output. The format string always
starts with a '%' character.
The commonly used format specifiers
in printf() function are:
 Format                 Description
 specifier
 %d or               It is used to print the signed
 %i                  integer value where signed
                     integer means that the
                     variable can hold both
                     positive and negative values.
 %u                  It is used to print the
                     unsigned integer value where
                     the unsigned integer means
                     that the variable can hold
                     only positive value.
 %o                  It is used to print the octal
                     unsigned integer where octal
                     integer value always starts
                     with a 0 value.
 %x                  It is used to print the
                     hexadecimal unsigned integer
                     where the hexadecimal
                     integer value always starts
                     with a 0x value. In this,
                     alphabetical characters are
                     printed in small letters such
                     as a, b, c, etc.
 %X                  It is used to print the
                     hexadecimal unsigned
                     integer, but %X prints the
                     alphabetical characters in
                     uppercase such as A, B, C,
                     etc.
 %f                  It is used for printing the
                     decimal floating-point values.
                     By default, it prints the 6
                     values after '.'.
 %e/%E               It is used for scientific
                     notation. It is also known as
                     Mantissa or Exponent.
 %g                  It is used to print the decimal
                     floating-point values, and it
                     uses the fixed precision, i.e.,
                     the value after the decimal in
                     input would be exactly the
                     same as the value in the
                     output.
 %p                  It is used to print the address
                     in a hexadecimal form.
 %c                  It is used to print the
                     unsigned character.
 %s                  It is used to print the strings.
 %ld                 It is used to print the long-
                     signed integer value.
Let's understand the format specifiers
in detail through an example.
 Find a job in Germany
 Make use of your knowledge
 For information on job vacancies in Germany,
 click here!
 make-it-in-germany.com
                                  OPEN
            %d
     int main()
         int b=6;
         int c=8;
         printf("Value of b is:%d", b);
         printf("\nValue of c is:%d",c);
          return 0;
In the above code, we are printing the
integer value of b and c by using the %d
specifier.
Output
            %u
     int main()
         int b=10;
         int c= -10;
         printf("Value of b is:%u", b);
         printf("\nValue of c is:%u",c);
          return 0;
In the above program, we are displaying
the value of b and c by using an unsigned
format specifier, i.e., %u. The value of b is
positive, so %u specifier prints the exact
value of b, but it does not print the value
of c as c contains the negative value.
Output
            %o
     int main()
         int a=0100;
         printf("Octal value of a is: %o", a);
         printf("\nInteger value of a is: %d",a);
         return 0;
In the above code, we are displaying the
octal value and integer value of a.
Output
            %x and %X
     int main()
         int y=0xA;
         printf("Hexadecimal value of y is: %x", y);
         printf("\nHexadecimal value of y is: %X",y);
         printf("\nInteger value of y is: %d",y);
          return 0;
In the above code, y contains the
hexadecimal value 'A'. We display the
hexadecimal value of y in two formats. We
use %x and %X to print the hexadecimal
value where %x displays the value in
small letters, i.e., 'a' and %X displays the
value in a capital letter, i.e., 'A'.
Output
            %f
     int main()
         float y=3.4;
         printf("Floating point value of y is: %f", y);
         return 0;
The above code prints the floating value of
y.
Output
            %e
     int main()
         float y=3;
         printf("Exponential value of y is: %e", y);
         return 0;
Output
            %E
     int main()
         float y=3;
         printf("Exponential value of y is: %E", y);
         return 0;
Output
            %g
 Find a job in Germany
 Make use of your knowledge
 For information on job vacancies in Germany,
 click here!
 make-it-in-germany.com
                                  OPEN
     int main()
         float y=3.8;
         printf("Float value of y is: %g", y);
         return 0;
In the above code, we are displaying the
floating value of y by using %g specifier.
The %g specifier displays the output same
as the input with a same precision.
Output
            %p
     int main()
         int y=5;
         printf("Address value of y in hexadecimal form i
         return 0;
Output
            %c
     int main()
         char a='c';
         printf("Value of a is: %c", a);
         return 0;
Output
            %s
     int main()
         printf("%s", "javaTpoint");
         return 0;
Output
Minimum Field Width Specifier
Suppose we want to display an output that
occupies a minimum number of spaces on
the screen. You can achieve this by
displaying an integer number after the
percent sign of the format specifier.
     int main()
     int x=900;
         printf("%8d", x);
         printf("\n%-8d",x);
         return 0;
In the above program, %8d specifier
displays the value after 8 spaces while
%-8d specifier will make a value left-
aligned.
Output
Now we will see how to fill the empty
spaces. It is shown in the below code:
     int main()
     int x=12;
         printf("%08d", x);
         return 0;
In the above program, %08d means that
the empty space is filled with zeroes.
Output
Specifying Precision
We can specify the precision by using '.'
(Dot) operator which is followed by integer
and format specifier.
     int main()
     float x=12.2;
         printf("%.2f", x);
         return 0;
Output
         ← prev                                       next →
Help Others, Please Share
         Join Javatpoint Test Series
         Placement AMCAT Bank                      GATE
         Papers         eLitmas     PO/Clerk NEET
         TCS            Java        UPSSSC CAT
         HCL            Python      Government
                                            Railway
         Infosys        C           Exams          CTET
         IBM            Programming
                                 SSC               IIT JEE
         Accenture NetworkingCivil
                                    Services
                                    SBI
Learn Latest Tutorials
                                  Scipy Tutorial
          Spring Clo.                  Scipy
           DevOps                    GitHub