UNIT 82질문
, Jung Yongho _정용호님이 작성// 연결 리스트에 파일 정보 노드(FILE_NODE) 추가 node->next = archive->fileList.next; archive->fileList.next = node;안녕하세요 선생님 제가 일단 이 부분을 코드로 그려봤는데요
제가 이해한 것이 맞나요?
// 파일 데이터의 시작 위치는 현재 파일 포인터의 위치에
// 파일 정보 크기만큼 순방향으로 이동시킨 값
desc->dataOffset = ftell(archive->fp) + sizeof(FILE_DESC);
그리고 이 부분또한 이해가 안되는데요
dataOffset 은 FILE_DESC의 일부분아닌가요?? 데이터 시작위치를 알려줄려면 fseek()함수를 이용해서 이동하면 안되나요?
왜 더해줘야되는지 잘 모르겠습니다 ㅠㅠ
감사합니다~
Re: UNIT 82질문
, 도장_ 관리자님이 작성그림 82-2를 보고 파일 구조를 이해하세요.
파일에서 데이터를 읽을 때
아카이브 헤더는 건너 뛰어야 하고,
FILE_DESC 구조체에 파일에 대한 정보가 담겨 있습니다.
dataOffset은 파일 위치를 이동하며 데이터를 읽는 포인터일 뿐입니다.
데이터를 10바이트 읽으면 dataOffset도 10바이트 이동하며 현재 위치를 유지하는 용도입니다.
데이터 시작 위치를 알려면 FILE_DESC에서 데이터를 읽어야 가능하겠죠?
dataOffset은 현재 위치를 가리키는 트랙 레코드라고 생각하면 됩니다.
아카이브 파일은 파일 정보를 담고 있는 정보를 이용해서 이동하기 때문에
연결 리스트를 사용하지 않았습니다.
그림이 연결 리스트를 의도한 것이라면 틀린 것입니다.