사용자가 주문을 작성하는 AddOrder()라는 메서드가 있습니다. 시스템에서 제품 이름을 입력하라는 메시지를 표시하면 products.dat 파일에서 특정 레코드를 가져 오는 기능을 작성하려고합니다. 또한 사용자가 제품 수량을 입력하라는 메시지가 표시 될 때마다 해당 특정 제품의 제품 수량이 해당 제품의 재고에서 사용할 수있는 양 (products.dat에도 저장되어있는 금액)을 초과하는지 감지 할 수 있기를 원합니다.C에서 파일에서 특정 레코드의 특정 데이터 얻기
나는 함수를 사용했지만 AddOrder()에서 호출 할 때 제대로 작동하지 않습니다. 여기 내 코드가있다. 왜 QuantityInStock
값을 인쇄하는 동안, 그것은 QuantityInStock
변수없는 값의 주소를 인쇄합니다 &
을 사용하는 printf("%d", &QuantityInStock);
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;
}
무슨 오류가 있습니까? –