Znaczy, wszystko się wyświetla, oprócz zmiennych wartosc i suma
Na dodatek funkcja zawsze wyświetla dodatkową linie z trzema zerami
Tutaj macie kod programu:
#include<stdio.h>
#include<stdlib.h>
struct magazyn
{
char nazwa[30];
int cena, ilosc;
}magazyn;
void dodaj(char *nazwa, int ilosc, int cena);
void zestawienie(void);
main()
{
dodaj(magazyn.nazwa,magazyn.ilosc,magazyn.cena);
zestawienie();
system("pause");
}
void dodaj(char *nazwa, int ilosc, int cena)
{
int i,a;
FILE *fp=fopen("magazyn.txt", "a");
printf("Podaj ilosc towarow do dodania: \n");
scanf("%d", &a);
for(i=0;i<a;i++)
{
printf("\nPodaj nazwe towaru: ");
scanf("%29s", magazyn.nazwa);
printf("\nPodaj jego ilosc: ");
scanf("%d", &magazyn.ilosc);
printf("\nPodaj jego cene: ");
scanf("%d", &magazyn.cena);
fprintf(fp,"%s\t\t%d\t%d\n",magazyn.nazwa,magazyn.ilosc,magazyn.cena);
}
fclose(fp);
}
void zestawienie(void)
{
FILE *fp=fopen("magazyn.txt", "r");
int wartosc=0,suma=0;
printf("Nazwa towaru\tIlosc\tCena\tWartosc\n");
while (fread(&magazyn,1,sizeof(magazyn),fp))
{
wartosc=magazyn.ilosc+magazyn.cena;
printf("%s\t%d\t%d\t%d", magazyn.nazwa,magazyn.cena, magazyn.ilosc, wartosc);
suma = suma + wartosc;
}
printf("\n\n");
printf("Suma wartosci towarow: %d\n", suma);
fclose(fp);
}