0

ユーザーが注文を作成する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;

}
4

1 に答える 1

0

printf("%d", &QuantityInStock);

&値の出力中に使用する理由は、変数の値ではなく変数QuantityInStockのアドレスをQuantityInStock出力することです..

printf("%d", QuantityInStock);

これはあなたの問題の答えではないと思います.問題は他の場所にあります..あなたが得ているエラーを共有してください..

于 2013-01-05T05:25:00.910 に答える