LANGUAGE C++ Write a program that transfers the contents of one file to a second
ID: 3841208 • Letter: L
Question
LANGUAGE C++
Write a program that transfers the contents of one file to a second file. The first file will contain an arbitrary (unknown) number of data groups. A data group will normallyconsist of a person's name (a stringcontaining spaces), the person's student ID (a large integer), the person's GPA (a floating point number), and the person's gender (a character).
The data in each group should be in a labeled data format. Be sure to use some kind of string library to help you with the label/value processing (as we discussed in class). (The library provided here is good but not everything you'll need. You still need functions to convert strings into integers and into floating point numbers. string to bool, string to string, and string to character conversions should be fairly easy.)
You can choose the actual values to use for the people's data, but you should be able to handle:
invalid labels
comments (at least whole-line)
unknown labels
missing labels
unordered (but properly blocked) labels
Remember that your program cannot know how many data groups are in the file ahead of time!
You'll have to read the files' names from the user. Protect your program against any errors that may occur during the opening of the files. (Try to use a class/functions to break up the program into more manageable pieces.)
As an example, you might have the input data file contain:
(The highlighting is provided as a visual aid -- it is not really gonna be part of your input files. *grin*)
The program should produce from this a 'clean copy' such as:
Note how the user's commentary is gone and only the program's reminder commentary is replicated. Also all labels (and gender values) are now in standard capitalization/format and order of data in each group as well as spacing of each data line is uniform. Labels that had their defaulted values (and therefore were not assigned) are not stored. (Although you could output a comment noting that the value was missing: # no GPA specified.)
And the program interaction might look something like (the parts in this color are typed by the user):
File 'students' opened successfully! Please enter the name of the copy file: /can't write here I'm sorry, I could not open '/can't write here'. Please enter another name: students.bak File 'students.bak' opened successfully! Copying data from 'students' to 'students.bak'... Done copying data! Thank you for using the PCP!! Endeavor to have a tremendous day!
Explanation / Answer
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
void main( )
{
ofstream outfile;
ifstream infile;
char file1[10],file2[20];
char ch,newch;
clrscr( );
cout<<"Welcome to the People Data Copying Program!!!"<<endl;
cout<<"Please enter the name of your data file: "<<endl;
cin>> file1;
cout<<"Please enter the name of the copy file: "<<endl;
cin>>file2;
infile.open(file1);
if( infile.fail( ) )
{
cout<<"I'm sorry, I could not open"<<file1<<"Please enter another name"<<endl;
getch();
exit(1);
}
outfile.open(file2);
if(outfile.fail( ))
{
cout<<"I'm sorry, I could not open"<<file2<<"Please enter another name: "<<endl;
getch();
exit(1);
}
cout<<"Copying data from "<<file1<<"to "<<file2<<" ..."<<endl;
while( !infile.eof( ) )
{
ch = (char) infile.get( );
outfile.put(ch);
}
cout<<"Done copying data!"<<endl;
infile.close( );
outfile.close( );
getch( );
cout<<"Thank you for using the PCP!!"<<endl;
cout<<"Endeavor to have a tremendous day!"<<endl;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.