2013-01-05 43 views
0

我有一個名爲AddOrder()的方法,用戶可以在其中創建訂單。當系統要求用戶輸入產品名稱時,我想編寫一個從products.dat文件獲取特定記錄的函數。同樣當用戶被要求輸入產品數量時,我希望系統能夠檢測到特定產品的產品數量是否超過該產品的庫存(也存儲在products.dat中)的可用數量。從C文件中獲取特定記錄的特定數據C

我試過這個功能,但是當我從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; 

} 
+0

你得到什麼錯誤? –

回答

0

printf("%d", &QuantityInStock);

爲什麼使用&在打印QuantityInStock值,它會打印QuantityInStock變量而不是它的值的地址..

printf("%d", QuantityInStock);

我覺得這是沒有答案你的問題,問題是一些其他地方..請分享你得到的錯誤..

+0

謝謝,我的問題解決了。這是得到的地址不是實際值。我用printf來測試它,並且打印了一個巨大的值。 – JCooperS

+0

'&'解決你的問題?然後標記爲正確答案:D –