Сценарий вопроса: есть 2 файла customer.dat
и transaction.dat
, содержащих количество записей (структура записи определяется кодом bt-структур). В файле transacton.dat есть 2 типа tran_types (d / c дебет или кредит ) по дебету и кредиту баланс в файле customer.dat будет обновлен.
#include<stdio.h>
main()
{
struct tran
{
int accno;
char tran_type;
float amount;
};
struct tran t;
struct cust
{
int accno;
char name[30];
float balance;
};
struct cust c;
FILE *fp,*ft;
fp=fopen("customer.dat","rb+");
if(fp == NULL)
{
printf("Cant open file\n");
exit(1);
}
ft=fopen("transaction.dat","rb");
if(ft == NULL)
{
printf("Error\n");
}
while(fread(&c,sizeof(c),1,fp)==1)
{
rewind(ft);
while(fread(&t,sizeof(t),1,ft)==1)
{
if(c.accno == t.accno)
{
if(t.tran_type=='d')
{
c.balance=(c.balance-t.amount);
fseek(fp,-sizeof(c),SEEK_CUR);
fwrite(&c,sizeof(c),1,fp);
}
else if(t.tran_type =='c')
{
c.balance= (c.balance + t.amount);
fseek(fp,-sizeof(c),SEEK_CUR);
fwrite(&c,sizeof(c),1,fp);
}
}
}
}
fclose(fp);
fclose(ft);
printf("Success");
}