Back to C Programming
2026-07-116 min read

C Input Output (I/O)

Learn C Input Output (I/O) step by step with examples for Indian students.

Why This Matters

Input and output (I/O) operations are fundamental concepts for programming students across various platforms including CS exams at , campuses as well as competitive placements like campus interviews.

C language provides a rich set of functions to handle I/O efficiently which is crucial in many real-world applications. Whether you want your program to read user input or display results on the screen — mastering C's standard library for these operations can significantly improve both performance and readability, making it an essential skillset that goes beyond classroom learning.

Prerequisites

Before diving into detailed I/O functions of C programming language (C), make sure you're familiar with:

  1. Basic syntax: Variables declaration (int num; float pi = 3.14;).
  2. Control structures like loops and conditionals.
  3. Functions in C, including standard library function prototypes.

Core Concept

Standard I/O Library

The stdio.h header file provides functions for performing input/output operations such as reading from a keyboard or writing to the screen (printf(), scanf() etc.). The fundamental concepts of this section are:

  1. File Descriptors: Every open stream (stdin, stdout, stderr) is associated with an integer descriptor.
  2. Buffering Mechanisms and Flushing: How data flows between program memory space and I/O devices.

Standard Input Functions

  • int scanf(const char *format, ...); reads formatted input from stdin using format specifiers like %d, %f.
  • Line-by-line explanation:
int num;
printf("Enter an integer: ");
if (scanf("%d", &num) != 1)
// Error handling for incorrect data type entered.

Standard Output Functions

  • int printf(const char *format, ...); writes formatted output to stdout using format specifiers like %s, %f.
  • Line-by-line explanation:
float pi = 3.14;
printf("The value of Pi is: %f\n", pi);

Standard Error Functions

  • int fprintf(FILE *stream, const char *format, ...); writes formatted output to a specified file stream.
  • Line-by-line explanation:
FILE *file = fopen("output.txt","w");
if (file != NULL)
fprintf(file,"The value of Pi is: %f\n", pi);
fclose(file);

Common Mistakes in I/O Operations

  1. Uninitialized Variables

Forgetting to initialize variables can lead to undefined behavior when using them for input/output operations.

  1. Improper Input Validation

Not validating user inputs might cause unexpected results or even crashes due to incorrect data types.

Worked Example

Let's write a C program that reads an integer from the standard input and prints its square value on the screen:

#include <stdio.h>

int main() {
int num;

printf("Enter an integer: ");
// Read formatted input using scanf.
if (scanf("%d", &num) != 1)
return -1; // Return error code for incorrect data type entered.

float square = num * num;

printf("The value of %f squared is :%f\n", num, square);

return 0;
}
  • Line-by-line explanation:
int main() {
int num; // Declare an integer variable to store user input.

printf("Enter an integer: "); // Prompt the user for input using printf().
if (scanf("%d", &num) != 1)
return -1; // Check whether scanf successfully read a valid integer. If not, exit with error code.

float square = num * num; // Calculate and store squared value in 'square' variable.

printf("The value of %f squared is :%f\n", num, square); // Print the result using formatted output (printf()).
}

Common Mistakes

  1. Ignoring Return Values

Not checking return values for I/O functions can lead to unexpected results or even program crashes.

  1. Improper Buffer Flushing

Forgetting to flush buffers when necessary might cause data loss especially in real-time applications involving network communications.

  1. Using Uninitialized Variables as Format Specifiers

Using uninitialized variables with format specifiers like %d can lead to undefined behavior or incorrect results due to garbage values.

Practice Questions

  1. Write a C program that reads two integers from the standard input and prints their sum on the screen using scanf() for reading inputs.
  2. Modify your previous solution by adding error handling code which will check if user entered valid integer value, else print an appropriate message saying "Invalid Input".

FAQ

Q1: Why is it important to use %f format specifier instead of other formats like %d, when printing floating-point values?

A1: The printf() function in C uses different format specifiers for various data types. When dealing with float or double variables, we need to use the appropriate format specifier (%f) which ensures that decimal point is displayed correctly and precision of output matches our requirements.

Q2: How can I handle incorrect user inputs while reading from standard input using scanf()?

A2: One way you could manage this issue would be by checking return values for your calls to functions like scanf(). If the function returns a value different than 1, it means that an error has occurred or invalid data was entered. You can then display appropriate messages and/or prompt user again until valid input is received.

Q3: How do I print multiple variables of same type using one call to printf()?

A3: In C programming language you could use the comma separated format specifiers for printing different values in a single printf() function. For example, if we want to display two integers and their sum on screen then it can be done as follows:

int num1 = 10;
int num2 = 20;

printf("num1: %d\n", num1);
printf("num2: %d\n", num2);

int result = num1 + num2;
// Print the sum of two integers using printf() function.
printf("%d+%d=%d\n", num1, num2, result); // format specifiers separated by commas

Q4: How can I print a floating-point number with 3 decimal places?

A4: You could use %f as the format specifier along with precision value. For example:

float pi = 3.141592653589793238;
printf("pi is %.3f\n", pi); // prints "pi is 3.142"

Q5: What are some common mistakes while using scanf() for reading inputs in C?

A5: Some of the most commonly encountered issues when dealing with I/O functions like scanf(), include:

  • Not checking return values after calling scanf(). If a wrong data type is entered, it might lead to undefined behavior.
  • Forgetting to initialize variables before using them for input/output operations. This can cause unexpected results or even crashes due to garbage value being used instead of actual user inputs.

Q6: How do I read multiple values from standard input in C?

A6: You could use the scanf() function with comma separated format specifiers and a single call as follows:

int num1, num2;
printf("Enter two integers separated by space:\n");
if (scanf("%d %d", &num1, &num2) != 2)
return -1; // Return error code for incorrect data type entered.

printf("You have entered: %d and %d\n", num1, num2);

Q7: How can I print a variable to the standard output in C?

A7: You could use printf() function along with appropriate format specifier. For example:

int x = 10;
float pi = 3.141592653589793238;
// Print integer and floating-point number on screen using printf() function.
printf("The value of variable 'x' is %d\n", x);
printf("pi to three decimal places: %.4f\n", pi); // prints "3.1421"

Q8: How can I print a character instead of an integer in C?

A8: You could use %c as the format specifier along with appropriate variable containing char type data:

char c = 'a';
printf("The value stored at memory location is %c\n", c);

Q9: How can I print a string using printf() function in C?

A9: You could use %s as the format specifier along with appropriate variable containing char type data:

char str[] = "Hello World!";
printf("The value stored at memory location is %s\n", str);

Q10: How can I print a string using puts() function in C?

A10: You could use the puts() function along with appropriate variable containing char type data:

char str[] = "Hello World!";
puts(str); // prints Hello World!