У меня нет проблем с открытием и чтением двоичного файла, когда я не передаю его функции. Но в этом случае я передаю его функции и продолжаю сталкиваться с проблемой.
void fun1 (int amount,struct inventory a[],FILE *fp);
int main()
{
tag a[10];
int amount;
int i;
FILE *fp;
fp=fopen("e:\\invent.txt","wb");
printf("How many items do you want to enter? ");
scanf("%d",&amount);
for(i=1;i<=amount;i++)
{
printf("Enter the name of the item: ");
scanf("%s",a[i].name);
printf("Enter the unit amount the item has: ");
scanf("%d",&a[i].num);
printf("Enter the unit price for the item: ");
scanf("%f",&a[i].price);
fwrite(&a[i],sizeof(a[i]),amount,fp);
}
fclose(fp);
fun1(amount,a,fp);
}
^^ Это мой ввод плюс мой вызов функции ^^.
Мой вклад:
Сколько предметов вы хотите ввести? 2
Введите название предмета: Молоток
Введите количество единиц товара: 32
Введите цену за единицу товара: 11
Введите название предмета: Гвозди
Введите количество единиц товара: 43
Введите цену за единицу товара: 12
void fun1 (int amount,struct inventory a[],FILE *fp)
{
int i;
fp=fopen("e:\\invent.txt","rb");
while(fread(&a[amount],sizeof(tag),amount,fp) == amount)
{
printf("\nItem\tUnit #\tPrice\n");
for(i=1;i<=amount;i++)
{
printf("\n%s\t%d\t%.2f",a[i].name,a[i].num,a[i].price);
}
}
fclose(fp);
getchar();
}
^^ Моя функция ^^
Мой вывод:
Единица измерения № Цена
Молот 32 11.00
Молот 32 11,00
Единица измерения № Цена
Молот 32 11,00
Гвозди 43 12,00
Не следует печатать «Молоток» дважды. Только жирный должен быть напечатан. Если вы можете дать мне ссылку или у вас есть совет, мы будем очень благодарны!