Mam taki oto program:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct magazyn
{
char nazwa[30];
int cena, ilosc;
}magazyn;
void dodaj(char *nazwa, int ilosc, int cena);
void sprzedaz(void);
void zestawienie(void);
main()
{
dodaj(magazyn.nazwa,magazyn.ilosc,magazyn.cena);
sprzedaz();
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 sprzedaz(void)
{
FILE *fp = fopen("magazyn.txt", "r");
char odp[5],nazwa[30];
int i=0,a,ilosc;
do
{
printf("\nPodaj nazwe towaru, ktory zostal sprzedany: ");
scanf("%29s", nazwa);
printf("\nPodaj ilosc sprzedanego towaru: ");
scanf("%d", &ilosc);
while(!feof(fp))
{
fscanf(fp,"%s%d%d", magazyn.nazwa, &magazyn.cena, &magazyn.ilosc);
i++;
}
fclose(fp);
fp = fopen("magazyn.txt", "w");
fclose(fp);
fp = fopen("magazyn.txt", "a");
for (a=0;a<i;a++)
{
if(!strcmp(magazyn.nazwa,nazwa))
{
magazyn.ilosc = magazyn.ilosc - ilosc;
}
}
for (a=0;a<i;a++)
{
if (magazyn.ilosc>0)
{
fprintf(fp,"%s\t\t%d\t%d\n",magazyn.nazwa,magazyn.cena,magazyn.ilosc);
}
}
printf("\nCzy sprzedaz zostala zakonczona? t - tak\tn - nie\n");
scanf("%5s", &odp);
}
while (odp[0] != 't');
fclose(fp);
}
void zestawienie(void)
{
FILE *fp=fopen("magazyn.txt", "r");
int wartosc=0,suma=0;
printf("Nazwa towaru\tIlosc\tCena\tWartosc\n");
while (!feof(fp))
{
fscanf(fp,"%s%d%d", magazyn.nazwa, &magazyn.cena, &magazyn.ilosc);
wartosc=magazyn.ilosc*magazyn.cena;
printf("%s\t\t%d\t%d\t%d\n", magazyn.nazwa, magazyn.cena, magazyn.ilosc, wartosc);
suma = suma + wartosc;
}
printf("\n\n");
printf("Suma wartosci towarow: %d\n", suma);
fclose(fp);
}
Niestety nie wiem dlaczego nie działa mi dobrze funkcja sprzedaż. Próbowalem różnymi sposobami zmieniać, ale dalej ta funkcja źle odejmuje w pliku