我需要在产品列表上执行此批量更新。此批量更新必须从数据库中检索每个产品并获得它的“订单数量”。然后必须将此“订购数量”添加到当前库存中:
例如:
当前库存:100 订购:150
批量更新后,它们必须是: 当前库存:250 订购:0
我已经完成了这个方法(见下文),但是当我运行它时,它并没有更新我的库存,也没有更新我的订单。
void batchUpdate()
{
printf ("\n\n\n\n\t\t ********** Batch Update *******\n \n \n");
int tempOrder;
int tempStock;
int tempAdding;
if ((pfp = fopen("products.dat","r+b")) == NULL)
{
printf ("Error! Cannot Open Products.dat!\n");
printf ("Returning to Main Menu\n");
system ("PAUSE");
orderMainMenu();
}
while (fread(&p,STRUCTSIZE,1,pfp) == 1)
{
tempOrder = p.pOrder;
tempStock = p.pStock;
tempAdding = tempOrder + tempStock;
p.pOrder = 0;
p.pStock = tempAdding;
fwrite (&p,STRUCTSIZE,1,pfp);
}
fclose (pfp);
printf ("Orders and Stock Updated!\n");
printf ("Returning to Main Menu!\n");
system ("PAUSE");
orderMainMenu();
}
我尝试使用 fseek (pfp, -STRUCTSIZE,SEEK_CUR); 但这把我的程序变成了一个无限循环。此外,当我尝试使用 show All products in database 时,他们跳过了我的第一条记录,只是进入了一个仅显示最后一条记录的无限循环。我只需要最终从系统中删除 products.dat 文件,然后再重做一次。
有什么建议吗?我确实相信 fseek() 有问题。
提前致谢