我有一系列的活动,我想根据他们的年份,然后每年的月份,然后每个月的每天,然后每天的小时来对它们进行排序.
typedef struct {
struct tm start;
struct tm end;
} event;
...
event events[100];
Run Code Online (Sandbox Code Playgroud)
我只需要担心按start日期排序.几个小时我一直在努力...
与对多个键进行任何排序的方式相同:一次一个,按所需的优先顺序排序.
一个qsort()回调可能是这个样子:
static int event_compare(const void *a, const void *b)
{
const event *ae = a, *be = b;
if(ae->start.tm_year < be->start.tm_year)
return -1;
else if(ae->start.tm_year > be->start.tm_year)
return 1;
/* Years are equal, try to solve that by checking month. */
if(ae->start.tm_month < be->start.tm_month)
return -1;
else if(ae->start.tm_month > be->start.tm_month)
return 1;
/* Months are equal, go on with day, and so on. */
}
Run Code Online (Sandbox Code Playgroud)