だから、私が書いたバイナリファイルから構造を読み込もうとしていますが、何かが間違っているようです。これが私のメインです:
//Fraction structure
struct Fraction
{
int num, den;
};
int main()
{
int menu_selection;
char slash;
fstream datafile; //creates file object
Fraction* f; //creates pointer for dam
//menu to the user
menu_selection = main_menu();
bool condition = true;
while (condition)
{
switch(menu_selection)
{
case 1: //adds a new Fraction structure to binary file
f = new Fraction; //dynamically allocating memory
cout << "Enter fraction to add: "; //adds fraction to file
cin >> f->num >> slash >> f->den;//stores input
datafile.open("fractions.dat",ios:: out | ios:: app | ios::binary); //creates file
datafile.write(reinterpret_cast<char *>(f),sizeof(Fraction));//stores fraction to file
datafile.close();
menu_selection = main_menu();
break;
case 2:
menu_selection = main_menu();
break;
case 3: //displays the contents of the file to user
datafile.open("fractions.dat", ios::in | ios::binary);
while(!datafile.eof())
{
datafile.read(reinterpret_cast<char *>(f),sizeof(f));
cout << f->num << "/" << f->den << " ";
}
datafile.close();
menu_selection = main_menu();
break;
case 4:
menu_selection = main_menu();
break;
case 5:
menu_selection = main_menu();
break;
case 6: condition = false;
return 0;
break;
default: cout << endl << "That is an invalid option. Please try again." << endl; //default option
break;
}
}
delete f;
}
ユーザーが 1 を入力すると、Fraction 構造体にメモリを動的に割り当て、それをバイナリ ファイルに書き込みます。再度呼び出されたときにファイルに追加したいので、ios::app を使用します。書き込み機能または読み取り機能のいずれかに問題はありますか? このままプログラムを実行すると、1/5 などの分数を 1 つ入力すると 1/5 5/5 5/5 と表示されますが、1/5 と 2/6 などの分数を 2 つ入力すると2/6 6/6 6/6.