-3
私は銀行システム用のコードを書いており、固まってしまって何が間違っているのかを指摘できません。誰でも助けてくれますか?私はループで自分の誤りを指摘することができません
この機能は、バイナリファイル 'Accounts.bat'に保存されているアカウントから残高を変更することでした。ループは決して終わらない。
void transaction :: process()
{ int bflag=0;
if(type==0||type==1)
{ account b;
fstream file("Accounts.bof",ios::binary);
file.seekg(0,ios::beg);
while(!file.eof())
{ file.read((char*)&b, sizeof(b));
if(file.eof())
break;
if(b.get_acno()==payee.ac)
{ if(b.get_balance()>=amount)
{ b.minus_money(amount);
bflag=1;
file.seekp(-1*(sizeof(b)),ios::cur);
file.write((char*)&b, sizeof(b));
b.out(); //to output account's details
getch();
break;
cout<<"Money deducted";
getch();
}
}
file.write((char*)&b, sizeof(b));
}
if(bflag==0)
cout<<"\n\n\t\tTransaction unsuccessful!!!";
cout<<"\n\t\tCause : Insufficient Balance.";
file.close();
}
if(type==0||type==2)
{ account b;
fstream file("Accounts.bof",ios::binary);
while(!file.eof())
{ file.read((char*)&b, sizeof(b));
if(!file.eof())
break;
if(b.get_acno()==recieptent.ac)
{ b.add_money(amount);
cout<<"money added";
file.seekp(-1*(sizeof(b)),ios::cur);
file.write((char*)&b, sizeof(b));
break;
}
file.write((char*)&b, sizeof(b));
}
file.close();
}
if(bflag)
cout<<"\n\n\t\tTransaction successful.";
getch();
}
デバッガの使い方を学びます。 – dandan78
http://idownvotedbecau.se/nodebugging/ – Melebius
簡潔で完全な例をまとめて、使用しているコードパスを確認できるように入力してください。あなたはあなたのループは決して終わらないと言っていますが、どちらが終わりですか?マジックナンバーを列挙型に入れて名前を付けることを検討してください。あなたはまたこれを読むべきです:https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrongあなたの使い方が完全に間違っているわけではありませんが、成功したか失敗したかをテストしていることを確認してください。 –