برنامه ی ساده ای رو که در پایین می بینید , نوعی کلاس شامل یک رشته کاراکتر و یک اینتجر است. که برنامه با توابعی متغیر هایی از نوع این کلاس رو دریافت و در فایلی ذخیره میکند و در قسمتی هم محتویات آن را نشان می دهد.
در صورتی که برنامه رو اجرا کنیم و در این فایل بنویسیم و آن را نمایش دهیم مشکلی پیش نمی آید , اما مساله ی من اینجاست که اگر این برنامه رو ببندیم و دوباره اجرا کنیم و بخواهیم محتویات فایل رو ببینیم , فایل مطالب پرت و پلا نمایش می دهد.
خیلی ممنون میشم که راهنمایی کنید.
عکس وسط نمایش فایل بلافاصله بعد از ثبت در فایل. عکس سمت راست نمایش فایل بعد از اجرای مجدد برنامه.
#include <iostream>
#include <conio>
#include <fstream>
#include <stdio>
class data
{
int n;
char *st;
public:
data();
void getdata();
void showdata();
};
data::data()
{
st=new char[40];
}
void data::getdata()
{
cout<<"Enter n: ";
cin>>n;
cout<<"Enter string: ";
gets(st);
}
void data::showdata()
{
cout<<"n: "<<n<<endl;
puts(st);
}
void enter();
void view();
void main()
{
char ans;
while(1)
{
clrscr();
cout<<"1)New data\n2)View\n3)Exit";
ans=getch();
switch(ans)
{
case '1': enter(); break;
case '2': view(); break;
case '3':return;
}
}
}
void enter()
{
clrscr();
data d;
ofstream ofile;
ofile.open("Data",ios::binary|ios::app);
d.getdata();
ofile.write((char*) &d,sizeof(data));
ofile.close();
}
void view()
{
clrscr();
data d;
ifstream ifile;
ifile.open("Data",ios::binary);
while(ifile.read((char*) &d,sizeof(data)))
{
d.showdata();
cout<<"\n\n";
}
getch();
}