【发布时间】:2017-05-08 19:35:55
【问题描述】:
如何正确地将二进制文件中的数据写入新的 char 数组。 我知道这个问题在这里被问了好几次,但我仍然无法弄清楚如何正确地做到这一点。
这是我到目前为止所拥有的......
struct Computer_Details {
char computer_type[99];
int release_year;
float price;
};
Computer_Details pc_details;
cout << "Enter Computer Type: ";
cin.getline(pc_details.computer_type, 255);
cout << "Enter Computer Release Date: ";
cin >> pc_details.release_year;
cout << "Enter Computer Price: ";
cin >> pc_details.price;
cout << "\n\n";
//Create File
ofstream file;
file.open("PC_Database.data", ios::binary | ios::app);
if (!file) cout << "Couldn't open file\n";
else {
file.write((char*)&pc_details, sizeof(Computer_Details));
file.close();
}
ifstream readFile;
readFile.open("PC_Database.data", ios::binary);
if (!readFile) cout << "Couldn't Open File\n";
else {
readFile.seekg(0, ios::end);
int fileSize = readFile.tellg();
int pcCount = fileSize / sizeof(Computer_Details);
readFile.seekg(0, ios::beg);
Computer_Details *pc_details = new Computer_Details[pcCount];
readFile.read((char*)pc_details, pcCount * sizeof(Computer_Details));
char *buff = new char[299];
for (int i = 0; i < pcCount; i++)
{
//write to buff char
}
readFile.close();
}
【问题讨论】:
-
你可以使用
strcpy。 -
这个答案没有帮助
-
离题:
cin.getline(pc_details.computer_type, 255);和char computer_type[99]之间的长度不匹配,导致computer_type超出范围。
标签: c++