我正在使用turbo c ++创建一个扫雷游戏,并且已经有了合理的部分。
现在我的目标是按时间,升序(最多10条记录)保存高分。 问题是我不得不使用turbo c ++
为此,我创建了一个类成员pname的类播放器,时间存储明显的值。然后,如果文件不存在,则创建一个新文件并将记录发送到该文件中。这里没问题。
当文件已经存在时,问题在于此部分:
player test;
int flag=-1,count=0; //flag to mark position at which new record will be inserted and count to count total no. of records present
while(f.read((char*)&test,sizeof(test))&&count<=10) //file is already opened in ifstream mode
{
count++;
if(curr_p.time<=test.time&&flag==-1) //curr_p is the object passed into this fxn and contains the current player's time
{
flag=(f.tellg())/sizeof(test)-1;
}
}
f.close();
f.open("high.dat",ios::binary|ios::in|ios::out);
if(count<10&&flag==-1)
flag=count;
cout<<"\n flag"<<flag<<"\n";
if(flag!=-1)
{
cout<<"\n it's a highscore! now enter your name "<<endl;
gets(curr_p.pname);
for(int i=(count-1);i>=flag;i--)
{
if(i<10)
{
f.seekp((i)*sizeof(test),ios::beg);
f.read((char*)&test,sizeof(test));
f.write((char*)&test,sizeof(test));
}
}
f.seekp(flag*sizeof(test),ios::beg);
f.write((char*)&curr_p,sizeof(test));
}
f.close();
这里的问题是一切都很好,直到有2条记录,例如这些是输入2条记录后的内容
Name Time
1. 2nd record 100
2. 1st record 200
进入第3条记录后-
Name Time
1. 3rd record 50
2. 1st record 200
3. 1st record 200
4. 2nd record 100
我无法弄清楚这里的错误
EDIT1-非常感谢大家的帮助,但我更多地使用了我的代码并将条目数量增加到11并且进行了一些更改,不知何故,所有这些都开始正常工作。猜猜我已经坚持了11人的高分,但听起来比传统的10人高得多。我猜?