C Program: Read a File
In this tutorial, we will write a C program to read and print the contents of a file.
For the purpose of example, let us consider a simple text file.
We create the text file, which is to be read. Copy the first stanza of the poem "The Tyger" by William Blake, paste it in a new file and save it as tyger.txt
inside your C program directory.
Tyger Tyger, burning bright,
In the forests of the night;
What immortal hand or eye,
Could frame thy fearful symmetry?
We will open tyger.txt
, read its contents and print the whole stanza into the terminal.
To open tyger.txt
, we use the fopen()
function, which opens it as per the mode provided to it in the last argument. Here we will be opening the file in the "r
" ("read") mode. The fgetc()
function returns a single character from the input stream, all the while increasing the position of the file pointer. It returns EOF
at the end of the file. The fclose()
function closes the file associated with the file pointer.
Here is the C program for reading and printing out the contents of a file.
#include <stdio.h>
int main() {
char c, file[50];
FILE *fp;
printf("FILENAME: ");
scanf("%[^\n]", file);
fp = fopen(file, "r"); // 'r' opens the file in read mode
printf("READING THE CONTENTS OF THE FILE [ %s ]\n", file);
while((c = fgetc(fp)) != EOF) {
printf("%c", c);
}
printf("\n");
fclose(fp);
return 0;
}
On executing the program, the prompt to enter FILENAME
will appear. Enter tyger.txt
.
$ ./a.out
FILENAME: tyger.txt
The program prints the contents of the entered file as
Well, .txt
files aren't just the only files to be read. You can read and print the contents of a C program file itself. If the above C program is saved as read.c
, run the program as
$ ./a.out
FILENAME: read.c