C++ Can';t读取C+中的二进制文件+;
我的代码正在运行,但它无法读取我输入的二进制文件的输出。它给出了一个垃圾值。该程序旨在允许用户选择一个选项C++ Can';t读取C+中的二进制文件+;,c++,fstream,binaryfiles,C++,Fstream,Binaryfiles,我的代码正在运行,但它无法读取我输入的二进制文件的输出。它给出了一个垃圾值。该程序旨在允许用户选择一个选项 添加项并将其写入二进制文件 显示已读取的二进制文件的输出 有什么帮助吗 #include <iostream> #include <fstream> using namespace std; struct info { char name[50]; int price, quantity; }; void AddItem(info ite
#include <iostream>
#include <fstream>
using namespace std;
struct info
{
char name[50];
int price, quantity;
};
void AddItem(info item)
{
cin.ignore();
cout<<"Enter the following data about an item: \n";
cout<<"Item name: ";
cin.getline(item.name,50);
cout<<"Price per item: RM";
cin>>item.price;
cout<<"Quantity: ";
cin>>item.quantity;
}
void DisplayItems(info item)
{
cout<<"Item name: "<<item.name<<endl;
cout<<"Price per item: "<<item.price<<endl;
cout<<"Quantity: "<<item.quantity<<endl;
}
int main()
{
info item;
int option;
char again;
cout<<"1. Add new item in the product file\n";
cout<<"2. Display all items\n";
cout<<"3. Exit\n";
cout<<"select option: ";
cin>>option;
if(option==1)
{
fstream file("report.dat", ios::out|ios::binary);
do
{
AddItem(item);
file.write(reinterpret_cast<char*>(&item), sizeof(item));
cout<<"Do you want to enter another record? (Y/N): ";
cin>>again;
}
while(again=='Y'||again=='y');
}
if(option==2)
{
fstream file("report.dat", ios::in|ios::binary);
if(!file)
{
cout<<"Error in opening the file!";
return 0;
}
file.read(reinterpret_cast<char*>(&item),sizeof(item));
while(!file.eof())
{
DisplayItems(item);
file.read(reinterpret_cast<char*>(&item),sizeof(item));
}
file.close();
}
if(option==3)
{
cout<<"Exit";
return 0;
}
return 0;
}
#包括
#包括
使用名称空间std;
结构信息
{
字符名[50];
国际价格、数量;
};
无效附加项(信息项)
{
cin.ignore();
不能改变你的想法吗
void AddItem(info item)
到
因此,用户在该函数中的输入将反映在实际参数中
我还想更改该函数的名称。尝试将report.dat
替换为repost.txt
我还将重新检查重新解释演员阵容(&item),尺寸(item)
如果没有,请打开您在程序中创建的报告文件。您所说的“我无法读取文件”到底是什么意思?打开文件时是否显示错误!
?您所说的“它给出了垃圾值”是什么意思?这就是二进制文件中的内容看起来像…@AnthonyD。你可以参考附件中的图片。输出屏幕假设给我一个值,是吗?重命名文件不会对代码产生任何影响。该程序非常基本,在处理它时不考虑文件扩展名。
void AddItem(info& item)