82.8 질문입니다.
, 김 웅찬님이 작성append 함수에서 아카이브 파일 내에 파일이 있느냐 없느냐에 따라서 값이 저장되는 위치를 변경하는데, 이 이유가
node->next = archive->fileList.next;
에서fileList의 next가 현재가리키는 값이 없기 때문인지 궁금합니다.
Re: 82.8 질문입니다.
, 도장_ 관리자님이 작성while (size > currPos)
{
PFILE_NODE node = malloc(sizeof(FILE_NODE));
if (fread(&node->desc, sizeof(FILE_DESC), 1, fp) < 1)
{
printf("아카이브 파일 읽기 실패\n");
free(node);
ret = -1;
goto FINALIZE;
}
node->next = archive->fileList.next;
archive->fileList.next = node;
currPos = ftell(fp) + node->desc.size;
fseek(fp, currPos, SEEK_SET);
}
이 부분에서 쓰이는데 질문의 의도가 파악되지 않습니다.
UNIT 82는 그림을 그려서 이해하는 게 더 이해하기 쉽습니다.
해당 부분은 아카이브 파일에서 파일 정보를 읽어와서 동적으로 할당한 내부 리스크에 파일 정보를 연결 리스트로 연결하는 부분입니다. 즉, 파일 정보를 메모리로 로딩하는 과정입니다.
즉, 아카이브 파일에 리스트가 10개(즉, 파일이 10개)이면 로딩 과정에서도 동적 할당한 node 연결 리스트 10개를 만드는 과정입니다.