Reverse the content of a file and store it in another

The article explains how to store the reverse of the first text file’s data to a second text file. In this post, it has been assumed that there is no text in the first text file. So we will write some text in a first text file by passing data to reverse function and then in reverse function we will copy the reverse of its data to another text file.

In text file the data is stored in the ASCII format and the data can be read in the text editor with each alphabet in the file given a specific index in the memory similar to that of an array


// Sample input 1 
Input to the reverse function:


// Sample input 2
Input to the reverse function:  
Geeks For Geeks

skeeG roF skeeG

Step 1: Calling reverse function with text that is needed to be contained in the first text file i.e. passing sample input of text file.
Working of Reverse function
Step 2: Opening file in writing mode and writing “str” into first text file here: in file Geeks.txt
Step 3: Storing the location of end of first text file in the variable “pos” and the closing the file.
Step 4: Opening first text file in reading mode and placing the reading pointer at position pos.
Step 5: Opening new text file “Geeks2.txt” in writing mode.
Step 6: Reading first text file character by character from the end and storing each character to the second text file.
Step 7: Shifting the read pointer one alphabet backwards in the text file.
Step 8: Closing the text files.
Step 9: Reading second text file (you can skip it if not necessary).

**name of first text file ="Geeks.txt"
**name of second text file="Geeks2.txt"






#include <conio.h>
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
// function to perform the task
// accepts the parameter str as the text to
// be stored in text file
void reverse(char str[])
    char ch;
    ofstream ofs;
    // created text file"Geeks.txt", ios::out);
    for (int i = 0; str[i] != '\0'; i++) {
        // writing into the file
    // storing the position of  end of the file
    int pos = ofs.tellp();
    // object for reading the contents of the
    // first text file
    ifstream ifs;"Geeks.txt", ios::in);
    // object for writing in to the text file 2
    ofstream ofs1;"Geeks2.txt", ios::out);
    // putting the read pointer to the last alphabet
    // of the file
    while (pos >= 0) {
        // reading from the file 1
        // writing to the file 2
        /* shifting read pointer position one 
        alphabet backwards in the text file */
    ifstream ifs1;"Geeks2.txt", ios::in);
    // file.eof() checks the end of the text file
    while (!ifs1.eof()) {
        cout << ch;
// Driver code
int main()
    // sample input 1
    cout << "example 1: (Geeks For Geeks) \n";
    // passing first text file's text
    // through reverse function
    reverse("Geeks For Geeks");
    // sample input 2
    cout << "\n example 2:(reverse)\n";
    return 0;



Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using or mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Akanksha_Rai

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at to report any issue with the above content.