按出生日期排序患者结构

问题描述 投票:0回答:1

我有一个结构

typedef struct {
    char name[100];
    int born_date;
}patient;

我必须编写一个函数,该函数将按出生日期对该数组进行排序。功能看起来像void rendez(patient patients[], int n) {}其中,n数是数组长度,而Patients []数组包含有关病人的数据。我知道这不是一项艰巨的任务,但我仍会学习这种语言(C)。我可以使用qsort函数,但这对我来说是新的。我倾听每一个小费,感谢您的帮助

c function struct void
1个回答
0
投票

qsort使用用户定义的比较。您将需要一个辅助函数来比较2个项目

int compare_patient_dob(void *a, void *b)
{
    patient *pa = (patient *) a ;
    patient *pb = (patient *) b ;

    // Assuming born_dates are comparable, e.g., YYYYMMDD
    return pa->born_date - pb->born_date ;
}
...
// Later in the rendez function.
    qsort(patients, n, sizeof(patients[0], compare_patient_dob) ;
© www.soinside.com 2019 - 2024. All rights reserved.