Please correct the error in my program. When i run the program on turbo c++ 3, it output 3 times. Also When i enter more than 1 entry only the last entry is outputted. Also it is outputted 3 times. Please run the program and see. #include<fstream.h> #include<iostream.h> #include<conio.h> class student { int rollno; char name[20]; int tm; public: void input(); void transfer(); void output(); } obj; void student::input() { char ch='y'; ofstream outf; outf.open("mark.dat"); while(ch=='y') { cout<<"Enter rollno, name and mark"; cin>>rollno>>name>>tm; outf.write((char*)&obj,sizeof(obj)); cout<<"Wish to enter more(Y/N)?\n"; cin>>ch; } outf.close(); } void student::transfer() { ofstream outf; ifstream inf; inf.open("mark.dat"); outf.open("trans.dat"); while(inf) { inf.read((char*)&obj,sizeof(obj)); outf.write((char*)&obj,sizeof(obj)); } outf.close(); inf.close(); } void student:utput() { ifstream inf; inf.open("trans.dat"); while(inf) { inf.read((char*)&obj,sizeof(obj)); cout<<"\nRollno "<<rollno; cout<<"\nName "<<name; cout<<"\nTotal "<<tm; } inf.close(); } void main() { clrscr(); student obj; obj.input(); obj.transfer(); obj.output(); getch(); }
have tried to intend it. Thank you very much for taking time. I am from India and here we learn about only basics of c++ and our syllabus is based on turbo c++ 3. So i use turbo c++ and i don't know much about c++ programing. So i cannot implement instructions you give on modern c++. I tried new changes. But i still have some little problems. The program is to transfer content of one file to another. When i input only one entry, the program works. But when more than one entry is used it out puts only 1 or 2. Kindly please correct the problem. Here is the new code by correcting the previous errors. #include<fstream.h> #include<iostream.h> #include<conio.h> class student { int rollno; char name[20]; int tm; public: void input(); void transfer(); void output(); }; void student::input() { char ch='y'; ofstream outf; outf.open("mark.dat"); while(ch=='y') { cout<<"Enter rollno, name and mark\n"; cin>>rollno>>name>>tm; outf.write((char*)this,sizeof(student)); cout<<"Wish to enter more(Y/N)?\n"; cin>>ch; } outf.close(); } void student::transfer() { ofstream outf; ifstream inf; inf.open("mark.dat"); outf.open("trans.dat"); while( inf.read(( char* )this,sizeof(student))) { outf.write(( char* )this,sizeof( student ) ); } outf.close(); inf.close(); } void student:utput() { ifstream inf; inf.open("trans.dat"); while (inf.read((char*)this, sizeof(student))) { inf.read(( char* )this,sizeof( student ) ); cout<<"\nRollno "<<rollno; cout<<"\tName "<<name; cout<<"\tTotal "<<tm<<'\n'; } inf.close(); } void main() { clrscr(); student obj; obj.input(); obj.transfer(); obj.output(); getch(); } Code (markup):
I got all the program correctly here is it. #include<fstream.h> #include<iostream.h> #include<conio.h> class student { int rollno; char name[20]; int tm; public: void input(); void transfer(); void output(); }; void student::input() { char ch='y'; ofstream outf; outf.open("mark.dat"); while(ch=='y') { cout<<"Enter rollno, name and mark\n"; cin>>rollno>>name>>tm; outf.write((char*)this,sizeof(student)); cout<<"Wish to enter more(Y/N)?\n"; cin>>ch; } outf.close(); } void student::transfer() { ofstream outf; ifstream inf; inf.open("mark.dat"); outf.open("trans.dat"); while( inf.read(( char* )this,sizeof(student))) { outf.write(( char* )this,sizeof( student ) ); } outf.close(); inf.close(); } void student::output() { ifstream inf; inf.open("trans.dat"); while (inf.read((char*)this, sizeof(student))) { cout<<"\nRollno "<<rollno; cout<<"\tName "<<name; cout<<"\tTotal "<<tm<<'\n'; } inf.close(); } void main() { clrscr(); student obj; obj.input(); obj.transfer(); obj.output(); getch(); } Code (markup):