FILE *fd; // ?????????? ?????
char fname[LN]; // ??? ?????
int size; // ?????? ???????
int n; // ?????? ???????
Item *tab; // ???? ???????
???????? ??????? ?? ?????
??????? ???????????? ???? ?? ?????? ? ?????? ? ????????? ????????? ?????????? ????????
if(fd = fopen(fname, "r+b")){
???? ??????????, ????? ????????? ??????? ?? ????? ? ??????????? ??????
fread(&size, sizeof(int), 1, fd); // ?????? ??????? ???????
fread(&n, sizeof(int), 1, fd); // ?????? ??????? ???????
tab = (Item *)malloc(sizeof(Item) * size); // ????????? ?????? ??? ???????
fread(tab, sizeof(Item), n, fd); // ?????? ???????
}
else{
???? ?? ??????????, ??? ???? ??????? ? ???????? ? ???? ?????? ???????
fd = fopen(fname, "w+b");
fwrite(&size, sizeof(int), 1, fd);
}
???????? ??????? ? ????
fseek(fd, sizeof(int), SEEK_SET); // ?????????? ? ????? ?????? ???????
fwrite(&n, sizeof(int), 1, fd); // ???????? ? ???? ?????? ???????
fwrite(tab, sizeof(Item), n, fd); // ???????? ? ???? ???? ???????