Я пытаюсь понять qsort библиотеки c в контексте указателей на структуры. Вот существующий код, которым я хотел бы манипулировать:
Структура:
#define MAX_NAME 20
#define NUM_MONTHS 12
typedef struct EMP {
char name[MAX_NAME+1];
int monthSales[NUM_MONTHS];
int total;
} Emp;
Глобальная инициализация данных и их размер:
Emp *data;//where all entries are kept
int empSize;
и я построил 2 массива указателей Emp, которые я хотел бы ссылаться на данные в разных порядках:
Emp *nameArray[empSize];//an array of pointers to point to entries alphabetically
Emp *salesArray[empSize]; //an array of pointers to pointing to entries by sales
после того, как они были одинаково назначены, я хотел бы использовать qsort, чтобы упорядочить их по-разному. nameArray в алфавитном порядке, используя имя в структуре и массив продаж от большего к меньшему, используя итог в структуре
Как должны выглядеть методы сравнения и аргументы qsort?
Спасибо
Emp data[empSize];
, чтобы немного упростить себе задачу? Я бы начал с массива структур, заработал, а затем использовал массив указателей. Затем напишите вторую функцию сравнения и используйте второй массив указателей. - person gbulmer   schedule 24.03.2012