Сортировка базы данных (структуры) - C (СИ)
Формулировка задачи:
Здравствуйте, можете помочь с сортировкой базы данных, если кто знает, как можно реализовать, или просто пример, на основе чего можно сделать, пришлите, пожалуйста, сюда
Решение задачи: «Сортировка базы данных (структуры)»
textual
Листинг программы
void Swap (str *a, str *b) { str temp = *a; *a = *b; *b = temp; } int sort(char *name) { FILE*f; str **a; int n; int i, j; if ((f = fopen(name, "r+"))== NULL) { printf("Error %s\n", name); return 1; } n = filelength(fileno(f))/ sizeof(str); a = (str**)malloc(n * sizeof(str*)); while(!feof) { fread(&a, sizeof(str), n, f); if(!feof(f)) { for(i = 0; i < n - 1; i++) for(j = i + 1; j < n; j++) if(strcmp(a[i]->name_tov, a[j]->name_tov) > 0) { Swap(a[i],a[j]); } } } rewind(f); fwrite(&a, sizeof(str), n, f); fclose(f); free(a); return 0; }
Объяснение кода листинга программы
- В функции
Swap
происходит обмен значениями между двумя указателями на структуруstr
. - В функции
sort
открывается файл с базой данных для чтения и записи, определяется длина файла и выделяется память под массив указателей на структурыstr
. - В цикле
while
происходит чтение базы данных из файла в массивa
. - В цикле
for
происходит сортировка массиваa
по полюname_tov
структурstr
методом выбором. - После сортировки база данных записывается обратно в файл.
- Функция возвращает 0, если файл успешно закрыт и освобожден, иначе возвращается 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д