How to Read From a File in C?

File handing in C is the process in which we create, open, read, write, and close operations on a file. C language provides different functions such as fopen(), fwrite(), fread(), fseek(), fprintf(), etc. to perform input, output, and many different C file operations in our program.

In this article, we will explore how to read from a file in C using standard library functions.

Read From a File in C

In C, we can read files using functions provided by the standard library such as fopen(), fgetc(), fgets(), and fread().

Steps To Read A File:

  • Open a file using the function fopen() and store the reference of the file in a FILE pointer.
  • Read contents of the file using any of these functions fgetc(), fgets(), fscanf(), or fread().
  • File close the file using the function fclose().

Lets try to read contents of the file test.txt that contains following content

w3wiki | A computer science portal for Beginner

C Program to Read a File

C
// C program to implement
// the above approach
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Driver code
int main()
{
    FILE* ptr;
    char ch;

    // Opening file in reading mode
    ptr = fopen("test.txt", "r");

    if (NULL == ptr) {
        printf("file can't be opened \n");
    }

    printf("content of this file are \n");

    // Printing what is written in file
    // character by character using loop.
    do {
        ch = fgetc(ptr);
        printf("%c", ch);

        // Checking if character is not EOF.
        // If it is EOF stop reading.
    } while (ch != EOF);

    // Closing the file
    fclose(ptr);
    return 0;
}

Output

w3wiki | A computer science portal for Beginner

In this program, we will read contents of the file using fgetc(). fgetc() reads characters pointed by the function pointer at that time. On each successful read, it returns the character (ASCII value) read from the stream and advances the read position to the next character. This function returns a constant EOF (-1) when there is no content to read or an unsuccessful read.