Hi i could not specific Record from my binary file. This is the method to list out all records.
While running this i got the below outputCode:int student :: showall(fstream &fp) { student rec; fp.seekg(0,ios::beg); int i=0; cout<<"Position\tRoll No\t\tName\tBalance"<<endl; while(fp.read((char*)&rec,sizeof rec)) { cout<<i*sizeof rec<<"\t"; rec.show(); i++; } }
Now i want to search specific record. I gave RecNo 5 to search. This is my View methodPosition Roll No Name Balance
0 1 Heartly 10
28 2 Heartly 20
56 3 Heartly 30
84 4 Heartly 40
112 5 Heartly 50
140 6 Heartly 60
168 7 Heartly 70
196 8 Heartly 80
224 9 Heartly 90
252 10 Heartly 100
After running this method , i got below result.Code:int student :: view(fstream &fp,int RecNum) { student rec; std::ios::pos_type SearchPosition = RecNum*sizeof rec; cout<<endl<<"Position="<<SearchPosition<<endl; if( fp.seekg(SearchPosition) == 0 ) { cout<<endl<<"Position="<<SearchPosition<<endl; if(fp.read((char*)&rec,sizeof rec)) rec.show(); else cout<<endl<<"Read Error .. ! "<<endl; } else { cout<<endl<<"Record Number Not Found"<<endl; } }
Why it is not locating the specific Record?Record number (-1 Cancels):
5
Position=140
Record Number Not Found
I also given below my coding of calling the method
Why its not reading the specific Record?Code:printf("\nMenu : AddDummy, Add, View, Edit, List or Quit ( U, A, V, E, L or Q) : "); switch(toupper(getchar())) { case 'U' : file.open("abc.cli",ios::in|ios::out|ios::binary|ios::app); cout<<"Creating dummy file of 1000 entries"<<endl; record.adddummy(file); file.clear(); break; case 'A' : file.open("abc.cli",ios::in|ios::out|ios::binary|ios::app); record.get(); record.add(record,file); cout<<"Record Added"<<endl; file.clear(); break; case 'E' : file.open("abc.cli",ios::in|ios::out|ios::binary|ios::ate); cout<<endl<<"Record number (-1 Cancels): "<<endl; cin>>Rec; if (Rec > -1) { record.get(); if(!record.update(record,file,Rec)) cout<<"Record Edited"<<endl; else cout<<"Record Edited Failed"<<endl; file.clear(); } break; case 'V' : file.open("abc.cli",ios::in|ios::out|ios::binary|ios::ate); cout<<endl<<"Record number (-1 Cancels): "<<endl; cin>>Rec; if (Rec > -1) record.view(file,Rec); file.clear(); break; case 'L' : file.open("abc.cli",ios::in|ios::out|ios::binary|ios::ate); record.showall(file); file.clear(); break; case 'Q' : file.close(); return 0; default : cout<<" \nNot Matching\n "; }while(getchar() != '\n');



LinkBack URL
About LinkBacks


