0

fstream を関数に渡して、構造体をファイルに書き込もうとしています。ストリームを参照渡しする必要があることは承知していますが、実行時にファイルに何も書き込まれていません。私がこれまでに持っているものは次のとおりです。

struct Record
{
    char name     [16];
    char phoneNum [16];
    float balance;
};

void newRec (fstream &);

int main()
{
    fstream ref;
    ref.open("prog2.dat", ios::in | ios::out | ios::app | ios::binary);
    if(!ref.fail() )
    {
        int choice = menu(ref);
        system("CLS");

        while(choice != 6)
        {
            choice = menu(ref);
            system("CLS");
        }
    }
    else
        cout << "Error opening file. " << endl;

    return 0;
}


void newRec (fstream& ref)
{   
    Record rec;

    cout << "Enter customer name: ";
    cin.ignore();
    cin.getline(rec.name, sizeof(rec.name));
    cout << "Enter customer phone number: ";
    cin >> rec.phoneNum;
    cout << "Enter beginning account balance: ";
    cin >> rec.balance;

    ref.write(reinterpret_cast<char*>(&rec), sizeof(rec));
} 

rec は 3 メンバーの構造体です。これがうまくいかない理由はありますか?助けていただければ幸いです。注:割り当てに従って、 << ではなく .write() を使用する必要があります

4

2 に答える 2

1

Visual Studio を使用している場合: 間違ったディレクトリを探している可能性があります。ファイルはProjects\Project_Name\Project_Nameではなく、デバッグ時にに作成されProjects\Project_Name\Debugます。

于 2013-02-05T22:44:33.117 に答える
0

ストリームは と のようcoutに機能しcinます。あなたはおそらく使用した方が良いでしょう

ref << rec.name << "," << rec.phoneNum << "," << rec.balance << endl;
于 2013-02-05T21:09:34.733 に答える