C++ Practical
Binary File Processing Snippet-10
Copy Records
Question: Given a binary file TELEPHON.DAT, containing records of the following class Directory
class Directory
{
char name[20];
char address[30];
char areacode[5];
char phonenum[15];
public:
void register();
void show();
int checkcode(char AC[])
{ return strcmp(areadcpde, AC); }
};
Write a function COPYABC() in C++ that would copy all the records have areacode as "123" from TELEPHON.DAT to TELEBACK.DAT
//Question: Given a binary file TELEPHON.DAT, containing records of the following class Directory // class Directory // { // char name[20]; // char address[30]; // char areacode[5]; // char phonenum[15]; // public: // void register(); // void show(); // int checkcode(char AC[]) // { return strcmp(areadcpde, AC); } // }; // Write a function COPYABC() in C++ that would copy all the records have areacode as "123" // from TELEPHON.DAT to TELEBACK.DAT #include <iostream.h> #include <fstream.h> #include <string.h> #include <stdio.h> #include <process.h> void COPYABC(); class Directory { char name[20]; char address[30]; char areacode[5]; char phonenum[15]; public: Directory(); void addrec(); void show(); int checkcode(char AC[]) { return strcmp(areacode, AC); } }; Directory::Directory() { strcpy(name, ""); strcpy(address, ""); strcpy(areacode, ""); strcpy(phonenum, ""); } void Directory::addrec() { cout << "Enter Name: "; gets(name); cout << "Enter address: "; gets(address); cout << "Enter Areacode: "; gets(areacode); cout << "Enter Phone Number:"; gets(phonenum); // open file and append record ofstream ofile("TELEPHON.DAT",ios::app|ios::binary); ofile.write((char *)this,sizeof(Directory)); ofile.close(); } int main() { cout << "Enter 4 phone records:\n"; Directory d; d.addrec(); d.addrec(); d.addrec(); d.addrec(); COPYABC(); return 0; } void COPYABC() { ifstream ifile("TELEPHON.DAT",ios::in|ios::binary); if(!ifile) { cout<<"could not open TELEPHON.DAT"; exit(1); } ofstream ofile("TELEBACK.DAT",ios::out|ios::binary); if(!ofile) { cout<<"could not open TELEBACK.DAT"; exit(-1); } Directory d; int num = 0; cout << "Copying...\n"; while(ifile.read((char *)&d, sizeof(d))) { if(d.checkcode("123")==0) { num++; ofile.write((char *)&d,sizeof(d)); } } cout << num << " record(s) copied.\n"; ifile.close(); ofile.close(); }
Program Output:
No comments:
Post a Comment
We love to hear your thoughts about this post!
Note: only a member of this blog may post a comment.