В настоящее время я работаю над программой, которая получает количество и цену 5 продуктов и записывает их в текстовый файл, распечатывая все данные в виде таблицы и затем печатая одну из выбранных цен.записывает только данные последнего продукта в распечатанную таблицу, и цена выбранного продукта печатает 0.
#include <stdio.h>
#include <stdlib.h>
typedef struct Stock {
int quantity;
float price;
};
void print_stock(Stock a, int len) {
for (int code = 0; code < len; code++)
printf("code[%d] %4f %4d\n", code, a.price, a.quantity);
}
int main() {
FILE *fp = fopen("stocks.txt", "w+");
Stock a;
if (fp == NULL) {
puts("File couldn't be opened.\n");
exit(1);
}
int code, c;
char arr_code[5];
int len = sizeof(arr_code) / sizeof(arr_code[0]);
int option;
printf("There will be %d product(s) in the stock.\n", len);
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, len);
fclose(fp);
FILE *fp2 = fopen("stocks.txt", "r");
printf("Enter an option(starts from 0):\n");
scanf("%d", &option);
fseek(fp2, option * sizeof(struct Stock), SEEK_SET);
fread(&a, sizeof(struct Stock), 1, fp2);
printf("the price is %f\n", a.price);
fclose(fp2);
}
Я ожидал, что результат будет примерно таким:
There will be 5 product(s) in the stock.
Enter the product's quantity:76
Enter the product's price:88
Enter the product's quantity:5
Enter the product's price:44
Enter the product's quantity:89
Enter the product's price:32
Enter the product's quantity:54
Enter the product's price:33
Enter the product's quantity:94
Enter the product's price:65
code[0] 88.000000 76
code[1] 44.000000 5
code[2] 32.000000 89
code[3] 33.000000 54
code[4] 65.000000 94
Enter an option(starts from 0):
2
the price is 32.000000
Но я получаюэтот результат:
There will be 5 product(s) in the stock.
Enter the product's quantity:76
Enter the product's price:88
Enter the product's quantity:5
Enter the product's price:44
Enter the product's quantity:89
Enter the product's price:32
Enter the product's quantity:54
Enter the product's price:33
Enter the product's quantity:94
Enter the product's price:65
code[0] 65.000000 94
code[1] 65.000000 94
code[2] 65.000000 94
code[3] 65.000000 94
code[4] 65.000000 94
Enter an option(starts from 0):
3
the price is 0.000000