82.10 질문입니다.
, 이 강님이 작성문의에 필요한 코드만 남겨둡니다.
fread(&archive->header, sizeof(ARCHIVE_HEADER), 1, fp);
fread(&node->desc, sizeof(FILE_DESC), 1, fp);
여기까지가 제 답안입니다.
오답인 이유를 몰라서 어떻게 고쳐야 할지 모르겠습니다.
이유를 알려주실 수 있나요?
(도장_ 관리자에 의해 편집됨 - 원문 제출일 2017년 12월 30일, 토요일, 오후 11:09 )
회신: 82.10 질문입니다.
, 도장_ 관리자님이 작성fread 함수가 두 곳에서 쓰입니다.
fread 함수의 읽기가 실패했을 때 오류가 발생할 수 있습니다.
따라서 fread 함수는 if 문을 이용해서 적절하게 예외처리를 해야 합니다.
fread와 관련해서는 Unit 81.3의 비트맵 헤더 파일 읽기 부분을 참고하세요.
회신: 82.10 질문입니다.
, 이 강님이 작성문제점을 지적해 주셔서 감사합니다. 하지만 그 문제점을 if 문을 이용해 고쳤는데도 여전히 오답입니다. 한 줄씩 디버깅을 해 봐도 끝까지 문제를 찾지 못했습니다. 뭐가 문제인지 정말 모르겠습니다ㅜㅜ 아래가 제 답안입니다.
문의에 필요한 부분만 남겨둡니다.
curr = archive->fileList.next;
while (curr != NULL) {
PFILE_NODE next = curr->next;
free(curr);
}
(도장_ 관리자에 의해 편집됨 - 원문 제출일 2018년 1월 2일, 화요일, 오후 10:12 )
회신: 82.10 질문입니다.
, 도장_ 관리자님이 작성while (curr != NULL) {
PFILE_NODE next = curr->next;
free(curr);
}
이 부분이 잘못되었습니다.
Unit 74.1에서 linked_list_two_nodes.c 예제를 보세요.
while에서 해제하는 부분의 코드를 비교해보세요.
현재 코드의 문제점이 무엇인지 알 수 있습니다.
해결되면 답글도 남겨주세요.