Сортировка массив структур: qsort выдает Expression syntax - C (СИ)
Формулировка задачи:
Имеется код для сортировки массива структур:
При вызове функции
qsort (base, n, sizeof(people), namecmp);
int namecmp (const void * a, const void * b) { return strcmp (((people*)a).FIO, ((people*)b).FIO); }
namecmp
пишет: E2188 Expression syntax. Не могу понять, в чем ошибка?Решение задачи: «Сортировка массив структур: qsort выдает Expression syntax»
textual
Листинг программы
#ifndef _PERSONS_H_ #define _PERSONS_H_ 1 #include <string.h> #define NAME_LENGTH 32 #define DB_FILE "persons.db" typedef struct PERSON { char name[NAME_LENGTH]; int growth; double weight; } person_t; int name_cmp(const void * a, const void *b) { return strcmp(((person_t*)a)->name, ((person_t*)b)->name); } int growth_cmp(const void * a, const void * b) { return ((person_t*)a)->growth - ((person_t*)b)->growth; } int weight_cmp(const void * a, const void * b) { double d = ((person_t*)a)->weight - ((person_t*)b)->weight; return ( d < 0.0 ) ? -1 : ( d > 0.0 ) ? 1 : 0; } void dump(const person_t * pPerson) { printf("%-20s %6d %6.1f\n", pPerson->name, pPerson->growth, pPerson->weight); } #endif /* _PERSONS_H_ */
Объяснение кода листинга программы
В данном коде происходит сортировка массива структур person_t, который представляет собой набор данных о людях. Структура person_t содержит поля: name (имя), growth (рост), weight (вес). Код содержит три функции сравнения:
- name_cmp - сравнивает имена людей.
- growth_cmp - сравнивает рост людей.
- weight_cmp - сравнивает вес людей. Также в коде есть функция dump, которая выводит данные о человеке в консоль в отсортированном виде. Код определяет препроцессорные директивы для включения и исключения файла, в котором он находится, и определяет номер версии файла. Включаемый файл может быть подключен к другим файлам, чтобы использовать функции сортировки и вывода данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д