Formatted and Unformatted Input/Output functions in C

Last Updated : 28 May, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In C language, the Input/Output (I/O) functions are part of the standard library, and these functions are used for interacting with the user or other systems, to perform operations such as reading input and printing output.
These functions provide ways to read data from files and other input devices or write data to files or other output devices.

These input/output functions can be classified into two categories on the basis of how they handle the input/output data in terms of formatting or structure:

  • Formatted I/O Functions.
  • Unformatted I/O Functions.

Formatted I/O Functions

Formatted I/O functions are used to take various inputs from the user and display multiple outputs to the user. These types of I/O functions can help to display the output to the user in different formats using the format specifiers. These I/O supports all data types like int, float, char, and many more.

Why are they called formatted I/O?  

These functions are called formatted I/O functions because we can use format specifiers in these functions and hence, we can format these functions according to our needs.

List of some common format specifiers-

Format Specifier          Type            Description                                                    
%dint/signed intused for I/O signed integer value
%ccharUsed for I/O character value
%ffloatUsed for I/O decimal floating-point value        
%sstringUsed for I/O string/group of characters                                                       
%ldlong intUsed for I/O long signed integer value


The formatted I/O functions in C are discussed below:

printf()

printf() function is used in a C program to display any value like float, integer, character, string, etc on the console screen. It is a pre-defined function that is already declared in the stdio.h(header file). 

Syntax: 

C
//to print variables
printf("Format Specifier", var1, var2, ...., varn);
//to print a string 
printf("Enter the text which you want to display");

Example:

C
#include <stdio.h>

int main()
{
    // Creating an int type variable
    int a =20;
    // Printing the value of a variable
    printf("%d", a);
    // Printing a string
    printf("This is a string");

    return 0;
}

Output
20

scanf()

scanf() function is used in the C program for reading or taking any value from the keyboard by the user, these values can be of any data type like integer, float, character, string, and many more. This is a pre-defined function declared in stdio.h(header file). In scanf() function we use &(address-of operator) which is used to store the variable value on the memory location of that variable.

Syntax: 

C
scanf("Format Specifier", &var1, &var2, ...., &varn);

Example:

C
#include <stdio.h>

int main()
{
    int num1;

    // Printing a message on
    // the output screen
    printf("Enter a integer number: \n");

    // Taking an integer value
    // from keyboard
    scanf("%d", &num1);

    // Displaying the entered value
    printf("You have entered %d", num1);

    return 0;
}

Output:

Enter a integer number:
You have entered 56

sprintf()

sprintf stands for "string print". This function is similar to printf() function but this function prints the string into a character array instead of printing it on the console screen.

Syntax:

C
sprintf(array_name, "format specifier", variable_name);

Example:

C
#include <stdio.h>

int main()
{
    char str[50];
    int a = 2, b = 8;

    // The string "2 and 8 are even number"
    // is now stored into str
    sprintf(str, "%d and %d are even number",
            a, b);

    // Displays the string
    printf("%s", str);
    return 0;
}

Output
2 and 8 are even number


sscanf()

sscanf stands for "string scanf". This function is similar to scanf() function but this function reads data from the string or character array instead of the console screen.

Syntax:

C
sscanf(array_name, "format specifier", &variable_name);

Example: 

C
#include <stdio.h>

int main()
{
    char str[50];
    int a = 2, b = 8, c, d;

    // The string "a = 2 and b = 8"
    // is now stored into str
    // character array
    sprintf(str, "a = %d and b = %d",
            a, b);

    // The value of a and b is now in
    // c and d
    sscanf(str, "a = %d and b = %d",
           &c, &d);

    // Displays the value of c and d
    printf("c = %d and d = %d", c, d);
    return 0;
}

Output
c = 2 and d = 8

Unformatted Input/Output Functions

Unformatted I/O functions are used only for character data type or character array/string and cannot be used for any other datatype. These functions are used to read single input from the user at the console and it allows to display the value at the console.

Why they are called unformatted I/O?  

These functions are called unformatted I/O functions because we cannot use format specifiers in these functions and hence, cannot format these functions according to our needs.

The unformatted I/O functions in C are discussed below:

getch()

getch() function reads a single character from the keyboard by the user but doesn't display that character on the console screen and immediately returned without pressing enter key. This function is declared in conio.h(header file). getch() is also used for hold the screen.

Syntax:  

C
getch();

Example:

C
#include <conio.h>
#include <stdio.h>

int main()
{
    printf("Enter any character: ");

    // Reads a character but
    // not displays
    getch();

    return 0;
}


Output:

Enter any character: 

getche()

getche() function reads a single character from the keyboard by the user and displays it on the console screen and immediately returns without pressing the enter key. This function is declared in conio.h(header file).

Syntax:

C
getche();


Example:

C
#include <conio.h>
#include <stdio.h>

int main()
{
    printf("Enter any character: ");

    // Reads a character and
    // displays immediately
    getche();
    return 0;
}


Output:

Enter any character: g

getchar()

The getchar() function is used to read only a first single character from the keyboard whether multiple characters is typed by the user and this function reads one character at one time until and unless the enter key is pressed. This function is declared in stdio.h(header file)

Syntax: 

C
getchar();

Example:

C
#include <conio.h>
#include <stdio.h>

int main()
{
    char ch;

    printf("Enter the character: ");

    // Taking a character from keyboard
    ch = getchar();

    printf("%c", ch);
    return 0;
}


Output:

Enter the character: a
a

putchar()

The putchar() function is used to display a single character at a time by passing that character directly to it or by passing a variable that has already stored a character. This function is declared in stdio.h(header file) 

Syntax: 

C
putchar(variable_name);

Example:

C
#include <conio.h>
#include <stdio.h>

int main()
{
    char ch;
    printf("Enter any character: ");

    // Reads a character
    ch = getchar();

    // Displays that character
    putchar(ch);
    return 0;
}


Output:

Enter any character: Z
Z

gets()

gets() function reads a group of characters or strings from the keyboard by the user and these characters get stored in a character array. This function allows us to write space-separated texts or strings. This function is declared in stdio.h(header file).

Syntax:

C
//Declare a char type variable of any length
char str[length of string in number]; 
gets(str);


 Example:

C
#include <conio.h>
#include <stdio.h>
int main()
{
    // Declaring a char type array
    // of length 50 characters
    char name[50];

    printf("Please enter some texts: ");

    // Reading a line of character or
    // a string
    gets(name);

    // Displaying this line of character
    // or a string
    printf("You have entered: %s",
           name);
    return 0;
}


Output:

Please enter some texts: geeks for geeks
You have entered: geeks for geeks

puts()

In C programming puts() function is used to display a group of characters or strings which is already stored in a character array. This function is declared in stdio.h(header file).

Syntax:  

C
puts(identifier_name );

Example:

C
#include <stdio.h>

int main()
{
    char name[50];
    printf("Enter your text: ");

    // Reads string from user
    gets(name);

    printf("Your text is: ");

    // Displays string
    puts(name);

    return 0;
}


Output:

Enter your text: GeeksforGeeks
Your text is: GeeksforGeeks

putch()

putch() function is used to display a single character which is given by the user and that character prints at the current cursor location. This function is declared in conio.h(header file)

Syntax:     

C
putch(variable_name); 

Example:

C
#include <conio.h>
#include <stdio.h>

int main()
{
    char ch;
    printf("Enter any character:\n ");

    // Reads a character from the keyboard
    ch = getch();

    printf("\nEntered character is: ");

    // Displays that character on the console
    putch(ch);
    return 0;
}


Output:

Enter any character: d
Entered character is: d

Formatted I/O vs Unformatted I/O

Formatted I/O functions                              Unformatted I/O functions                       
These functions allow us to take input or display output in the user's desired format.These functions do not allow to take input or display output in user desired format.
These functions support format specifiers.These functions do not support format specifiers.
These are used for storing data more user friendlyThese functions are not more user-friendly.
Here, we can use all data types.Here, we can use only character and string data types.
printf(), scanf, sprintf() and sscanf() are examples of these functions.getch(), getche(), gets() and puts(), are some examples of these functions.

Next Article

Similar Reads