无限循环读取文件到数组

-2 c++ fstream infinite-loop

尝试读取文件时,我有一个无限循环.文件从用户输入中保存,然后使用单独的功能进行读取,最后显示.

这是我的阅读功能.循环没有找到eof(); 从文件.我看不出是什么问题.没有编译器错误.

void read(HouseholdItems items[AMOUNT], fstream& myFile, fstream& yourFile)
{
    myFile.open("insured.dat", ios::in | ios::binary);                                      // Open myFile
    yourFile.open("uninsured.dat", ios::in | ios::binary);                                  // Open yourFile
    for(int i = 0; i < AMOUNT; i++)
    {
        myFile.read(reinterpret_cast <char*>(&items[i]),sizeof(&items[i]));
        yourFile.read(reinterpret_cast <char*>(&items[i]),sizeof(&items[i]));
        for(i = 0; i < AMOUNT; i++)
        {
            while (myFile)
            {
                cout << "description: ";
                cout << items[i].description << endl;
                cout << "quantity: ";
                cout << items[i].quantity << endl;
                cout << "price: ";
                cout << items[i].price << endl;
                cout << "insured: ";
                cout << items[i].insured << endl;
            }
        }

    }

    myFile.close();
    yourFile.close();

}
Run Code Online (Sandbox Code Playgroud)

Ekl*_*eog 5

以下循环永远不会结束:不myFile对其体内进行修改:

        while (myFile)
        {
            cout << "description: ";
            cout << items[i].description << endl;
            cout << "quantity: ";
            cout << items[i].quantity << endl;
            cout << "price: ";
            cout << items[i].price << endl;
            cout << "insured: ";
            cout << items[i].insured << endl;
        }
Run Code Online (Sandbox Code Playgroud)

您必须读取while循环内的文件才能结束.

此外,您很可能有一个变量名称冲突:您有两个for使用相同变量的循环i; 这可能不是你想要的.