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.
Prerequisite:
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
Example:
// Sample input 1
Input to the reverse function:
reverse
Output:
esrever
// Sample input 2
Input to the reverse function:
Geeks For Geeks
Output:
skeeG roF skeeG
Approach:
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"
Example:
#include <conio.h>
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
void reverse( char str[])
{
char ch;
ofstream ofs;
ofs.open( "Geeks.txt" , ios::out);
for ( int i = 0; str[i] != '\0' ; i++) {
ofs.put(str[i]);
}
int pos = ofs.tellp();
ofs.close();
ifstream ifs;
ifs.open( "Geeks.txt" , ios::in);
ofstream ofs1;
ofs1.open( "Geeks2.txt" , ios::out);
ifs.seekg(--pos);
while (pos >= 0) {
ifs.get(ch);
ofs1.put(ch);
pos--;
ifs.seekg(pos);
}
ifs.close();
ofs1.close();
ifstream ifs1;
ifs1.open( "Geeks2.txt" , ios::in);
while (!ifs1.eof()) {
ifs1.get(ch);
cout << ch;
}
ifs1.close();
}
int main()
{
clrscr();
cout << "example 1: (Geeks For Geeks) \n" ;
reverse( "Geeks For Geeks" );
cout << "\n example 2:(reverse)\n" ;
reverse( "reverse" );
getch();
return 0;
}
|
Output:
Last Updated :
16 Jul, 2020
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...