7. 레코드 구조
❗❗ 레코드 구조
⭕ 방법 1 : 고정 길이 레코드
- 각 레코드가 같은 수의 바이트로 구성
- 필드 크기나 수를 반드시 고정하는 것은 아니다.
- 가변길이 필드를 위한 컨테이너로 사용
⭕ 방법 2 : 고정 갯수 필드
- 각 레코드가 같은 수의 필드로 구성
- 🔽 6개의 필드가 하나의 레코드 형성
⭕ 방법 3 : 길이 지시자
- 각 레코드는 길이 지시자를 지님
- 가변길이 레코드 처리에 널리 쓰임
⭕ 방법 4 : 주소 인덱스 사용
- 레코드의 시작주소 ( 바이트 오프셋: offset)를 사용
⭕ 방법 5 : 구분자(delimiter) 사용
- 각 레코드의 끝에 구분자를 놓음
- 🔽 '#'를 구분자로 사용
❗❗ 레코드 구조 비교
1. 검색 성능이 우수한 레코드 구조
✅ 방법 1 : 고정 길이 레코드
2. 저장 공간 사용이 우수한 레코드 구조
✅ 방법 3 : 길이 지시자
3. 가변 길이 레코드 구조에 적합
✅ 방법 4 : 주소 인덱스 사용
❗❗ 필드와 레코드 구성
- 길이지시자를 사용하는 레코드 구조 (방법3)
- 파일에 가변길이 레코드 구현
- 모든 레코드의 시작부분에 길이 지시자를 넣는다면, 파일에 레코드를 기록하기 전에 각 레코드의 필드 길이의 합을 알아야만 함.- 출력하기 전에 레코드의 전체 내용을 버퍼에 저장할 필요가 있음
- 파일에 가변길이 레코드 기록하기 : 방법 3- 길이지시자
int WritePerson (ostream & stream, Person &p)
{
// 버퍼 생성
char buffer[MaxBuffeSize];
// 각각의 필드에 구분자 "|"를 덧붙여 버퍼에 쓰기
strcpy(buffer,p.LastName); strcat(buffer,"|");
strcpy(buffer,p.FirstName); strcat(buffer,"|");
strcpy(buffer,p.Address); strcat(buffer,"|");
strcpy(buffer,p.City); strcat(buffer,"|");
strcpy(buffer,p.State); strcat(buffer,"|");
strcpy(buffer,p.ZipCode); strcat(buffer,"|");
// 버퍼에 기록된 레코드의 길이를 구하여 파일에 써넣기
short length = strlen(buffer);
stream.write(&length,sizeof(length));
// 버퍼에 기록된 레코드 내용을 파일에 써 넣기
stream.write(&buffer,length);
}
- ❗❗파일로부터 다양한 길이 레코드 판독 : 방법3-길이지시자
Author And Source
이 문제에 관하여(7. 레코드 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kdo6301/7.-레코드-구조저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)