soroush68
سه شنبه 18 تیر 1387, 17:15 عصر
:اشتباه: برنامه ی ساده ای رو که در پایین می بینید , نوعی کلاس شامل یک رشته کاراکتر و یک اینتجر است. که برنامه با توابعی متغیر هایی از نوع این کلاس رو دریافت و در فایلی ذخیره میکند و در قسمتی هم محتویات آن را نشان می دهد.
در صورتی که برنامه رو اجرا کنیم و در این فایل بنویسیم و آن را نمایش دهیم مشکلی پیش نمی آید , اما مساله ی من اینجاست که اگر این برنامه رو ببندیم و دوباره اجرا کنیم و بخواهیم محتویات فایل رو ببینیم , فایل مطالب پرت و پلا نمایش می دهد.
خیلی ممنون میشم که راهنمایی کنید.
عکس وسط نمایش فایل بلافاصله بعد از ثبت در فایل. عکس سمت راست نمایش فایل بعد از اجرای مجدد برنامه.
http://lengejoorab.persiangig.ir/c++problem.JPG
#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();
}
در صورتی که برنامه رو اجرا کنیم و در این فایل بنویسیم و آن را نمایش دهیم مشکلی پیش نمی آید , اما مساله ی من اینجاست که اگر این برنامه رو ببندیم و دوباره اجرا کنیم و بخواهیم محتویات فایل رو ببینیم , فایل مطالب پرت و پلا نمایش می دهد.
خیلی ممنون میشم که راهنمایی کنید.
عکس وسط نمایش فایل بلافاصله بعد از ثبت در فایل. عکس سمت راست نمایش فایل بعد از اجرای مجدد برنامه.
http://lengejoorab.persiangig.ir/c++problem.JPG
#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();
}