fstream中write和read连续使用的问题
文件以out、in、二进制方式打开,先在其中输入4本书的信息,然后将第4本书的信息复制到第5本书的位置,将第3本书的信息复制到第4本书的位置,程序如下,读入第4本书信息,立马在第5本书位置写入是,实际上不会实现这个写入操作,而加入注释掉的那句之后,程序一切正常,求问各位大侠,这是为什么?万分感谢,新人没多少分,各位见谅
struct book
{
char name[20];
char no[10];
float price;
int num;
};
fstream flib("data.dat",ios::in|ios::out|ios::binary);
if (!flib)
{
cout<<"can not open"<<" data"<<endl;
exit(1);
}
book temp;
for (int i=0;i<4;i++)
{
cin>>temp.name>>temp.no>>temp.num>>temp.price;
flib.write((char*) &temp,sizeof(book));
}
for (int j=3;j>1;j--)
{
flib.seekg(j*sizeof(book),ios::beg);
flib.read((char*) &temp,sizeof(book));
//flib.seekg((j+1)*sizeof(book),ios::beg);
flib.write((char*) &temp,sizeof(book));
int k4 = flib.tellg();
cout<<k4<<endl;
cout<<temp.name<<endl;
}
flib.seekg(0,ios::beg);
for (int t=0;t<=4;t++)
{
flib.read((char*) &temp,sizeof(book));
cout<<temp.name<<'\t'<<temp.no<<'\t'<<temp.num<<'\t'<<temp.price<<endl;
}