Format specifiers in C - GeeksforGeeks

28 Aug, 2021
The format specifier is used during input and output. It is a way to tell the compiler what type of data is in a variable during taking input using scanf() or printing using printf(). Some examples are %c, %d, %f, etc.The format specifier in printf() and scanf() are mostly the same but there is some difference which we will see. 
This function prints the character on standard output and returns the number of character printed the format is a string starting with % and ends with conversion character (like c, i, f, d, etc.). Between both, there can be elements governing the printing format. Below is its description 
A minus(-) sign tells left alignment.A number after % specifies the minimum field width to be printed if the characters are less than the size of width the remaining space is filled with space and if it is greater than it printed as it is without truncation.A period( . ) symbol separate field width with the precision.
A minus(-) sign tells left alignment.
A number after % specifies the minimum field width to be printed if the characters are less than the size of width the remaining space is filled with space and if it is greater than it printed as it is without truncation.
A period( . ) symbol separate field width with the precision.
Precision tells the minimum number of digits in integer, maximum number of characters in string and number of digits after decimal part in floating value. Lets see these.. Character format specifier : %c 
C
#include <stdio.h>int main(){    char ch = 'A';    printf("%c\n", ch);    return 0;}
A
 
For Signed Integer format specifier : %d, %i 
C
#include <stdio.h>int main(){    int x = 45, y = 90;    printf("%d\n", x);    printf("%i\n", x);    return 0;}
45
45
 
Unsigned Integer Format Specifier: %u:
C
#include <stdio.h>int main(){    // The -10 value is converted into it's positive    // equivalent by %u    printf("%u\n", -10);    printf("%u\n", 10);    return 0;}
Output: 4294967286
        10
Floating-point format specifier : %f, %e or %E 
C
#include <stdio.h>int main(){    float a = 12.67;    printf("%f\n", a);    printf("%e\n", a);    return 0;}
12.670000
1.267000e+01
 
Unsigned Octal number for integer : %o 
C
#include <stdio.h>int main(){    int a = 67;    printf("%o\n", a);    return 0;}
103
 
Unsigned Hexadecimal for integer: %x, %X 
C
#include <stdio.h>int main(){    int a = 15;    printf("%x\n", a);    return 0;}
f
 
String printing: %s 
C
#include <stdio.h>int main(){    char a[] = "geeksforgeeks";    printf("%s\n", a);    return 0;}
geeksforgeeks
 
Address Printing: %p
When our intention is to print the memory address of a variable/pointer ‘%d’ will not work because ‘%d’ will try to format an address into a number and values like 0xbfdd812 is clearly not a number, ie we MUST use %p.
C
#include <stdio.h>int main(){    int a = 10;    printf("The Memory Address of a: %p\n",(void*)&a);    return 0;}
Output: The Memory Address of a: 0x7ffc85861624
C
#include <stdio.h>int main(){    char str[] = "geeksforgeeks";    printf("%20s\n", str);    printf("%-20s\n", str);    printf("%20.5s\n", str);    printf("%-20.5s\n", str);    return 0;}
       geeksforgeeks
geeksforgeeks       
               geeks
geeks
 
This function take input using standard input (keyboard) and store it in variable accordingly. It returns the number of items successfully read. Formal parameter arg1, agr2, .. must be a pointerdecimal integer : %d 
C
#include <stdio.h>int main(){    int a = 0;    scanf("%d", &a); // input is 45    printf("%d\n", a);    return 0;}
Integer may be octal or in hexadecimal : %i 
C
#include <stdio.h>int main(){    int a = 0;    scanf("%i", &a); // input is 017 (octal of 15 )    printf("%d\n", a);    scanf("%i", &a); // input is 0xf (hexadecimal of 15 )    printf("%d\n", a);    return 0;}
Double floating-point number : %lf 
C
#include <stdio.h>int main(){    double a = 0.0;    scanf("%lf", &a); // input is 45.65    printf("%lf\n", a);    return 0;}
45.650000
 
String input : %s 
C
#include <stdio.h>int main(){    char str[20];    scanf("%s", str); // input is geeksforgeeks    printf("%s\n", str);    return 0;}
P@
 
Character input : %c 
C
#include <stdio.h>int main(){    char ch;    scanf("%c", &ch); // input is A    printf("%c\n", ch);    return 0;}
Many other format specifiers are also there 1.%u for an unsigned integer. 2.%lld for long long int. 3.%o octal integer without leading zero 4.%x hexadecimal integer without 0x before the number. 
mandarautade
Code_Mech
DMichaelPaxton
nidhi_biet
arun singh
txgb942kl8v0xd0jq7yl807ivw12kt3rh4jlkqez
c-input-output
cpp-input-output
C Language
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Multidimensional Arrays in C / C++
rand() and srand() in C/C++
Left Shift and Right Shift Operators in C/C++
fork() in C
Core Dump (Segmentation fault) in C/C++
Command line arguments in C/C++
Substring in C++
Function Pointer in C
Different methods to reverse a string in C/C++
TCP Server-Client implementation in C