typedef struct __dvdInfo
{
char ISBN[ISBN_LEN];
char title[TITLE_LEN];
int genre;
int rentState;
} dvdInfo;
static dvdInfo * dvdList[MAX_CUSTOMER];
static int numOfdvd = 0;
void DVDRentinput(char * ID, int Day, char * ISBN)
{
dvdInfo * pDVD = GetCusPtrByISBN(ISBN);
AddRentList(ISBN, ID, Day);
pDVD->rentState = RENTED;
puts("대여가 완료되었습니다.");
StoreDVD(); <---
getchar();
}
void RentDVD()
{
char DVDISBN[ISBN_LEN];
char ID[ID_LEN];
int Days;
int i;
fputs("대여 DVD ISBN 입력: ", stdout);
gets(DVDISBN);
i = IsRegistISBN(DVDISBN); // 등록된 ISBN (정보)인지 확인
if (i == 0) {
puts("등록되지않은 DVD 입니다.");
getchar();
return;
}
if (DVDrentnow(DVDISBN) == RENTED) { // DVD가 대여되어있는지 확인
puts("이미 대여되어있는 DVD 입니다.");
getchar();
return;
}
// DVD 대여 ↓
puts("대여가 가능합니다. 대여 과정을 진행합니다.");
fputs("대여 고객 ID 입력: ", stdout);
gets(ID);
if (!IsRegistID(ID)) { // 등륵된 ID인지 확인
puts("없는 ID 입니다.");
getchar();
return;
}
fputs("대여 날짜 입력: ", stdout);
scanf("%d", &Days);
DVDRentinput(ID, Days, DVDISBN);
getchar();
}
void StoreDVD()
{
FILE * fp = fopen("DVDfile.dat", "wb");
if (fp == NULL)
return;
fwrite(&numOfdvd, sizeof(int), 1, fp);
for (int i = 0; i < numOfdvd; i++)
fwrite(dvdList[i], sizeof(dvdInfo), 1, fp);
fclose(fp);
}
void LoadDVD()
{
FILE * fp = fopen("DVDfile.dat", "rb");
if (fp == NULL)
return;
fread(&numOfdvd, sizeof(int), 1, fp);
for (int i = 0; i < numOfdvd; i++) {
dvdList[i] = (dvdInfo *)malloc(sizeof(dvdInfo));
fread(dvdList[i], sizeof(dvdInfo), 1, fp);
}
fclose(fp);
}
저 표시된 StoreDVD() 호출 부분이 저기 있을땐 모든 정보가 다 저장되는데,
RentDVD() 함수 끝에 StoreDVD() 함수를 호출하면 dvdList에서 rentState만 저장이 안됩니다.
이거 뭐가 잘못된거죠?
으... 보지도 않고 내려버렸다
으... 보지도 않고 내려버렸다
일부분만 보여준 거 아님?
이것만 보고 알 수 있는 문제인가?;;
으..자지도 않고 내려버렸다
코드의 완성은 복붙