在C中处理文件中的库存数据时,数据打印不正确

在C中处理文件中的库存数据时,数据打印不正确,c,file,C,File,我目前正在开发一个程序,该程序获取5种产品的数量和价格,并将其写入文本文件,以表格的形式打印整个数据,然后打印其中一种选定的价格。但是,它只将最后一种产品的数据写入打印的表格,而选定产品的价格打印为0 #包括 #包括 typedef结构库{ 整数; 浮动价格; }; 作废打印库存(库存a,内部透镜){ 对于(int code=0;code

我目前正在开发一个程序,该程序获取5种产品的数量和价格,并将其写入文本文件,以表格的形式打印整个数据,然后打印其中一种选定的价格。但是,它只将最后一种产品的数据写入打印的表格,而选定产品的价格打印为0

#包括
#包括
typedef结构库{
整数;
浮动价格;
};
作废打印库存(库存a,内部透镜){
对于(int code=0;code
我期望输出如下:

库存中将有5种产品。
输入产品的数量:76
输入产品的价格:88
输入产品的数量:5
输入产品的价格:44
输入产品的数量:89
输入产品的价格:32
输入产品的数量:54
输入产品的价格:33
输入产品的数量:94
输入产品的价格:65
代码[0]88.000000 76
代码[1]44.0000005
代码[2]32.00000089
代码[3]33.00000054
代码[4]65.000000 94
输入一个选项(从0开始):
2.
价格是32.000000
但我得到的结果是:

库存中将有5种产品。
输入产品的数量:76
输入产品的价格:88
输入产品的数量:5
输入产品的价格:44
输入产品的数量:89
输入产品的价格:32
输入产品的数量:54
输入产品的价格:33
输入产品的数量:94
输入产品的价格:65
代码[0]65.000000 94
代码[1]65.000000 94
代码[2]65.000000 94
代码[3]65.000000 94
代码[4]65.000000 94
输入一个选项(从0开始):
3.
价格是0.000000

现在,您正在多次打印
a
的最新内容

只需将
len
传递为1,将
print_stock
函数调用移动到
for
循环中即可

for (code = 0; code < len; code++) {
    printf("Enter the product's quantity:");
    scanf("%d", &a.quantity);
    printf("Enter the product's price:");
    scanf("%f", &a.price);
    fprintf(fp, "quantity-%7d price-%7f\n", a.quantity, a.price);

    print_stock(a, 1);
}
for(code=0;code

也应考虑打印时的索引。

void print_stock(Stock a[], int len) {
    for (int code = 0; code < len; code++)
        printf("code[%d] %4f %4d\n", code, a[code].price, a[code].quantity);
}
void打印库存(库存a[],整数){
对于(int code=0;code
您能正确缩进代码吗?您每次都打印相同的
a
,那么您如何期望不同的值?您是否希望
a
成为数组?如
股票a[5]