这个C++程序 输入一组数据 为何会输出很多个结果啊~ 是有关文件处理的

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
    const int MAXNUM=100;
    struct item
    {
          char name[20];
          int itemnum;
          char instock[20];
          char supplier[20];
    }itemstr;
    fstream iofile("0054.io",ios::in|ios::out|ios::binary);
    int i,counter;
    char ans;
    //PART I,create and initialize an inventory file
    strcpy(itemstr.name,"");
    for(i=1;i <=MAXNUM;i++)
    {
itemstr.itemnum=i;
iofile.write((char *)&itemstr,sizeof(item));
}
//PART II,update the inventory file
iofile.seekg(0);
cout < <"enter item number(1--" < <MAXNUM < <",0 to stop):";
cin>>counter;
while(counter>=1&&counter <=MAXNUM)
{
iofile.seekg((counter-1)*sizeof(item),ios::beg);
iofile.read((char *)&itemstr,sizeof(item));
cout < <"update item's name?(Y or y):";
cin>>ans;
if(ans=='Y'||ans=='y')
{
cout < <"enter item's name:";
cin>>itemstr.name;
}
cout < <"update quantity in stock?(Y or y):";
cin>>ans;
if(ans=='Y'||ans=='y')
{
cout < <"enter quantity in stock:";
cin>>itemstr.instock;
}
cout < <"update supplier's ID?(y or Y):";
cin>>ans;
if(ans=='Y'||ans=='y')
{
cout < <"enter supplier's ID:";
cin>>itemstr.supplier;
}
itemstr.itemnum=counter;
iofile.seekp((counter-1)*sizeof(item),ios::beg);
iofile.write((char *)&itemstr,sizeof(item));
cout < <"enter item number(1--" < <MAXNUM < <",0 to stop):";
cin>>counter;
}
//PART III,list the inventory file
iofile.seekg(0);
for(i=1;i <=MAXNUM;i++)
{
iofile.read((char *)&itemstr,sizeof(item));
if(strcmp(itemstr.name,"")!=0)
{
cout < <endl;
cout < <"item number :" < <setw(20) < <itemstr.itemnum < <endl;
cout < <"item name :" < <setw(20) < <itemstr.name < <endl;
cout < <"in stock :" < <setw(20) < <itemstr.instock < <endl;
cout < <"suppllier :" < <setw(20) < <itemstr.supplier < <endl;
cout < <endl;
}
}
iofile.close();
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值