我有一个名为AddOrder()的方法,用户可以在其中创建一个订单。当系统要求用户输入产品名称时,我想编写一个从products.dat文件获取特定记录的函数。另外,当要求用户输入产品数量时,我希望系统能够检测到该特定产品的产品数量是否超过该产品的库存量(也存储在products.dat中)。

我尝试了该函数,但是当我从AddOrder()调用它时,它无法正常工作。这是我的代码。

void addOrder()
{
    order o1;


    ofp=fopen("orders.dat","ab");


    printf("\n========================================================\n\n");
    printf("\t\t Adding an Order\n\n");
    printf("========================================================\n\n");

    do
    {
        printf("Enter CustomerID: \n");
        scanf("%s",&o1.CustomerID);
    }while(!findCustomer(o1.CustomerID));


    printf("Enter Product Name: \n");
    scanf("%s", o1.ProductName);

    int QuantityInStock = getQuantity(o1.ProductName);
    printf("%d", &QuantityInStock);

    int PQuantity = 0;
    printf("Enter Product Quantities: \n");
    scanf("%d", &PQuantity);

    if(PQuantity > QuantityInStock)
    {
        printf("You have axeceeded available stock!\n");
    }
    else
    {
        printf("Product Quantity is available\n");
    }

    fwrite(&o1,sizeof(o1),1,ofp);
    printf("Order record was added to the system!\n");
    fclose(ofp);
}

int getQuantity(const char* ProductName)
{
    FILE *pfp;
    product p;
    int countstock=0;

    pfp=fopen("products.dat","rb");

    while(1)
    {
        fread(&p,sizeof(p),1,pfp);

        if(feof(pfp))
        {
        break;
        }
        if(strcmp(ProductName,p.ProductName)==0)
        {
            countstock +=&p.QuantityInStock;
        }

    }

    fclose(pfp);
    return countstock;

}

最佳答案

printf("%d", &QuantityInStock);

为什么在打印&值时使用QuantityInStock,它将打印QuantityInStock变量的地址而不是其值。

printf("%d", QuantityInStock);

我认为这不是您问题的答案,问题在其他地方。.请分享您遇到的错误。

08-17 00:30