In C programming, format specifiers are used in input/output functions (such as printf
and scanf
) to specify the type of data to be printed or read. These specifiers ensure that the data is displayed or read in the correct format.
Here’s an overview of commonly used format specifiers in C:
Commonly Used Format Specifiers
1. Integer Format Specifiers
%d
or%i
: Used to print signed decimal integers.int x = 10; printf("%d", x); // Output: 10
%u
: Used to print unsigned decimal integers.unsigned int x = 10; printf("%u", x); // Output: 10
%o
: Used to print unsigned octal numbers.unsigned int x = 10; printf("%o", x); // Output: 12 (octal)
%x
: Used to print unsigned hexadecimal numbers (lowercase).unsigned int x = 10; printf("%x", x); // Output: a (hexadecimal)
%X
: Used to print unsigned hexadecimal numbers (uppercase).unsigned int x = 10; printf("%X", x); // Output: A (hexadecimal)
2. Floating Point Format Specifiers
%f
: Used to print a floating-point number in decimal format (default).float x = 3.1415; printf("%f", x); // Output: 3.141500
%e
: Used to print floating-point numbers in scientific notation (lowercase).float x = 3.1415; printf("%e", x); // Output: 3.141500e+00
%E
: Used to print floating-point numbers in scientific notation (uppercase).float x = 3.1415; printf("%E", x); // Output: 3.141500E+00
%g
: Used to print the value of a float in either%f
or%e
format, depending on the value’s magnitude and precision.float x = 3.1415; printf("%g", x); // Output: 3.1415
3. Character and String Format Specifiers
%c
: Used to print a single character.char ch = 'A'; printf("%c", ch); // Output: A
%s
: Used to print a string (array of characters).char str[] = "Hello, World!"; printf("%s", str); // Output: Hello, World!
4. Pointer Format Specifiers
%p
: Used to print a pointer (memory address).int x = 10; printf("%p", &x); // Output: Memory address of x
5. Size Modifiers
%ld
: Used for long integers (signed).long int x = 1000000; printf("%ld", x); // Output: 1000000
%lu
: Used for unsigned long integers.unsigned long int x = 1000000; printf("%lu", x); // Output: 1000000
%lld
: Used for long long integers (signed).long long int x = 1000000000; printf("%lld", x); // Output: 1000000000
%llu
: Used for unsigned long long integers.unsigned long long int x = 1000000000; printf("%llu", x); // Output: 1000000000
6. Miscellaneous Format Specifiers
%%
: Used to print a literal percent sign.printf("100%%"); // Output: 100%
%n
: Used to store the number of characters printed so far into a variable.int count; printf("Hello, World!%n", &count); printf("Number of characters printed: %d", count); // Output: 13
Width and Precision Modifiers
You can also control the width and precision of the output in the format specifiers.
Width Modifier
%10d
: Specifies a width of 10 characters. The number will be right-aligned by default.int x = 5; printf("%10d", x); // Output: " 5" (padded with spaces)
Precision Modifier
%.2f
: Specifies two decimal places for floating-point numbers.float x = 3.14159; printf("%.2f", x); // Output: 3.14
Width and Precision Together
%10.2f
: Specifies a width of 10 characters and a precision of 2 decimal places.float x = 3.14159; printf("%10.2f", x); // Output: " 3.14"
Examples of Format Specifiers in Action
#include <stdio.h>
int main() {
int i = 123;
float f = 3.14159;
char c = 'A';
char str[] = "Hello, C!";
// Integer
printf("Integer: %d\n", i);
// Float
printf("Float: %.2f\n", f);
// Character
printf("Character: %c\n", c);
// String
printf("String: %s\n", str);
// Pointer
printf("Pointer: %p\n", (void*)&i);
return 0;
}
Output:
Integer: 123
Float: 3.14
Character: A
String: Hello, C!
Pointer: 0x7ffee3c8b4cc
Conclusion
Format specifiers in C provide a flexible and powerful way to manage input and output, ensuring that data is displayed or read in the correct format. By using these specifiers effectively, you can control the appearance of your program’s output and handle different types of data efficiently.