該代碼應該打印輸入內容的精確值並保留2個小數位,但不管打印什麼數字正在輸入。令人驚訝的是,名稱打印完美,但打印的(有序數量)值將始終爲零,並帶有2位小數位。可以請任何人告訴我出了什麼問題?是的,我仍然是這個初學者。無論輸入的是多少個數值,都有一個0.00浮點值的輸出
#include<stdio.h>
#include<string.h>
struct customer
{ char customer_name[20];
float order_amount;
}c[10];
int main()
{ int i;
clrscr();
printf("\n******Enter customer details******\n");
for(i=0; i<10; ++i)
{
printf("\nEnter customer name: ");
fflush(stdin);
gets(c[i].customer_name);
printf("Enter order amount: ");
scanf(" %0.2f",&c[i].order_amount);
}
printf("\n\t*********Displaying information*********\n");
printf("\nCustomers that has ordered are: \n");
for(i=0; i<10; ++i)
{ printf("\nCustomer name: %s\n",c[i].customer_name);
printf("Ordered amount: %0.2f\n",c[i].order_amount);
}
return 0;
}
謝謝。
不要使用'得到()'。永遠。緩衝區溢出會困擾你。 – Siguza
'fflush(stdin);'調用*未定義的行爲*和'gets()',具有不可避免的緩衝區溢出風險,已在C99中棄用並從C11中刪除。 Wild code ... – MikeCAT
您是否介意發佈用於測試的輸入數據? – MikeCAT