製品リストでこのバッチ更新を行う必要があります。このバッチ更新では、データベース内からすべての製品を取得し、「注文数量」を取得する必要があります。次に、この「注文数量」を現在の在庫に追加する必要があります。
例:
現在の在庫: 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); を使用してみました。しかし、それは私のプログラムを無限ループに変えました。また、データベース内のすべての製品を表示しようとすると、最初のレコードがスキップされ、最後のレコードのみが表示される無限ループに入りました。システムからproducts.datファイルを削除して、もう一度やり直す必要があります。
なにか提案を?fseek() に何か問題があると思います。
前もって感謝します