[c언어] 파일을 이용한 데이터 정렬 및 검색

파일은 프로그램에서 데이터를 저장하고 관리하기 위한 중요한 도구입니다. 이번에는 C언어를 사용하여 파일을 이용하여 데이터를 정렬하고 검색하는 방법에 대해 알아보겠습니다.

데이터 파일 작성

우선, 데이터를 저장할 파일을 생성해야 합니다. 데이터 파일을 작성하기 위해서는 파일에 데이터를 쓰는 기능을 사용해야 합니다.

아래는 데이터를 파일에 쓰는 예시 코드입니다.

#include <stdio.h>

int main() {
    FILE *file;
    file = fopen("data.txt", "w");
    if (file != NULL) {
        fprintf(file, "John 25\n");
        fprintf(file, "Alice 30\n");
        fprintf(file, "Bob 20\n");
        fclose(file);
    }
    return 0;
}

위의 코드는 “data.txt”라는 파일을 생성하고, 각 줄에 이름과 나이를 기록하고 있습니다.

데이터 정렬

파일에 데이터를 쓴 후에는 정렬 기능을 사용하여 데이터를 정렬할 수 있습니다. C언어에서는 qsort 함수를 사용하여 데이터를 정렬할 수 있습니다.

아래는 데이터를 파일에서 읽어 정렬하는 예시 코드입니다.

#include <stdio.h>
#include <stdlib.h>

struct Person {
    char name[50];
    int age;
};

int compare(const void *a, const void *b) {
    return ((struct Person*)a)->age - ((struct Person*)b)->age;
}

int main() {
    FILE *file;
    file = fopen("data.txt", "r");
    if (file != NULL) {
        struct Person people[3];
        for (int i = 0; i < 3; i++) {
            fscanf(file, "%s %d", people[i].name, &people[i].age);
        }
        fclose(file);
        qsort(people, 3, sizeof(struct Person), compare);
        file = fopen("sorted_data.txt", "w");
        if (file != NULL) {
            for (int i = 0; i < 3; i++) {
                fprintf(file, "%s %d\n", people[i].name, people[i].age);
            }
            fclose(file);
        }
    }
    return 0;
}

위의 코드에서는 qsort 함수를 사용하여 나이를 기준으로 데이터를 정렬한 후, “sorted_data.txt” 파일에 결과를 저장하고 있습니다.

데이터 검색

정렬된 데이터를 파일에 저장한 후에는 필요에 따라 데이터를 검색할 수 있습니다. 예를 들어, 특정 이름을 가진 사람의 나이를 찾을 수 있습니다.

아래는 파일에서 데이터를 검색하는 예시 코드입니다.

#include <stdio.h>

int main() {
    FILE *file;
    file = fopen("sorted_data.txt", "r");
    if (file != NULL) {
        char searchName[50];
        printf("Enter the name to search: ");
        scanf("%s", searchName);
        
        char name[50];
        int age;
        while (fscanf(file, "%s %d", name, &age) != EOF) {
            if (strcmp(name, searchName) == 0) {
                printf("%s is %d years old\n", name, age);
                break;
            }
        }
        fclose(file);
    }
    return 0;
}

위의 코드는 “sorted_data.txt” 파일에서 특정 이름을 가진 사람의 나이를 검색하는 예시입니다.

이렇게 파일을 이용하여 데이터를 정렬하고 검색하는 방법을 통해 C언어에서 파일 처리 기능을 익힐 수 있습니다.

결론

C언어를 사용하여 파일을 이용한 데이터 정렬 및 검색 기능은 프로그램에서 다양한 데이터 처리 작업을 수행하는 데 유용합니다. 파일을 효과적으로 활용하여 데이터를 정렬하고 검색하는 방법을 숙지하여 프로그래밍 역량을 향상시킬 수 있습니다.