can anyone please tell me why is the second program not able to show the records in the first program?

Aug 15, 2012 at 6:03pm
can anyone please tell me why is the second program not able to show the records which were entered in the first program??

PROGRAM 1 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<fstream.h>
#include<conio.h>
void main()
{clrscr();
 ofstream fileout;
 fileout.open("marks.dat", ios::app);
 char ans='y';
 int rollno;
 float marks;
 while(ans=='y')
{
 cout<<"\n Enter Rollno. :";
 cin>>rollno;
 cout<<"\n Enter Marks :";
 cin>>marks;
 fileout<<rollno<<'\n'<<marks<<'\n';
 cout<<"\n Want to enter more records?(y/n)";
 cin>>ans;
 }
 fileout.close();
 getch();
}


PROGRAM 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<fstream.h>
#include<conio.h>
struct marks
{
 int rollno;
 float marks;
}m1;
void main()
{clrscr();
 int rn;
 char found='n';
 ifstream fi("MARKS.DAT", ios::in);
 cout<<"Enter Rollno to be searched for :";
 cin>>rn;
 while(!fi.eof())
 {
  fi.read((char*)&m1, sizeof(m1));
  if(m1.rollno==rn)
  {
   cout<<"Rollno"<<rn<<"has"<<m1.marks<<"% marks."<<endl;
   found='y';
   break;
  }
 }
 if(found=='n')
 cout<<"Rollno not found in file!!"<<endl;
 fi.close();
 getch();
}
Last edited on Aug 15, 2012 at 6:07pm
Aug 15, 2012 at 6:10pm
That's not going to work.

Each data struct was saved as two lines of text
fileout<<rollno<<'\n'<<marks<<'\n';

But you are trying to re-read it as a binary block (size of a marks structure)
fi.read((char*)&m1, sizeof(m1));

The two methods are incompatible.

Last edited on Aug 15, 2012 at 6:11pm
Aug 15, 2012 at 6:22pm
how should i re-read the records entered in PROGRAM 1?
Aug 15, 2012 at 6:52pm
Well if you use formatted output ( outputfile << ) then use formatted input (inputfile >>);

1
2
3
4
5
6
while(!fi.eof())
 {
  fi >> mi.rollno >> mi.marks; //read in a pair of formatted inputs
  if(m1.rollno==rn)
  {
   
Last edited on Aug 15, 2012 at 6:53pm
Aug 15, 2012 at 7:13pm
Thanks!! :D
it worked.
Topic archived. No new replies allowed.