728x90
struct 형태의 배열 records가 있고, 이 배열에 새로운 데이터를 추가할 때마다, 기존 데이터를 하나씩 뒤로 밀어내고, 새 데이터를 배열의 첫 번째 위치에 저장하려고 합니다. 이렇게 하면 항상 최신 데이터에 빠르게 접근할 수 있으며, 오래된 데이터는 자연스럽게 배열의 끝으로 밀려나게 됩니다.
구조체 및 배열 정의
먼저, 사용할 struct를 정의합니다.
예를 들어, 각각의 Record가 온도 데이터를 포함하고 있다고 가정합니다
struct Record {
// ... 여기에 다른 필드들 ...
unsigned char tempData[10];
};
그리고 이 Record 타입의 배열을 선언합니다
#define RECORDS_SIZE 72
struct Record records[RECORDS_SIZE];
데이터 이동 로직
새 Record가 추가될 때마다, 기존의 모든 Record를 배열에서 한 칸씩 뒤로 이동시켜야 합니다.
이를 위해 다음과 같은 함수를 작성할 수 있습니다
void addNewRecord(struct Record newRecord) {
for (int i = RECORDS_SIZE - 1; i > 0; i--) {
records[i] = records[i - 1];
}
records[0] = newRecord;
}
이 함수는 newRecord를 매개변수로 받아, records 배열의 모든 원소를 뒤로 밀고, 배열의 첫 번째 위치에 newRecord를 저장합니다.
성능 고려사항
이 방식은 배열의 크기가 크지 않은 경우에 잘 작동합니다.
하지만 배열의 크기가 매우 큰 경우, 데이터 이동에 상당한 성능 비용이 발생할 수 있습니다.
이럴 때는 링 버퍼나 다른 데이터 구조를 고려하는 것이 좋습니다.
728x90
반응형
'언어 > C언어' 카테고리의 다른 글
[c언어] qsort 함수란? (1) | 2023.10.30 |
---|---|
[C언어] malloc 함수란? (0) | 2023.10.30 |
[c언어] strcpy 함수 (1) | 2023.10.30 |
[c언어] 멀티스레딩과 병렬 프로그래밍 (0) | 2023.10.28 |
[C언어] strstr 함수 사용 (2) | 2023.10.27 |
댓글