我如何使用Qsort对结构(由几个不同元素组成)进行排序

How do I sort structures (consisting of several different elements) using qsort?

本文关键字:元素 排序 几个 Qsort 何使用 结构      更新时间:2023-10-16

具体来说,它是关于.txt文件中的列表," char name"(jmeno(" char sullame"(prijmeni(" float falive"(prumer( ->平均为平均的学生他们的成绩(评分为1-5(,按照平均水平进行排序。

到目前为止我的代码看起来像这样:

FILE *otevriSoubor(char *jmeno, char* mode)
{
    FILE *soubor;
    soubor = fopen(jmeno, mode);
    if (!soubor)
    {
        printf("spatne jmeno souborun");
        system("PAUSE");
        exit(1);
    }
    return soubor;
}
int srovnaniprumeru(const void *a, const void *b)
{
    int c = ((Student *) a)->prumer;
    int d = ((Student *) b)->prumer;
    if (c > d) return -1;
    if (c < d) return 1;
    return 0;
}
int main(void)
{
    typedef struct
    {
        char jmeno[MAXDELKA];
        char prijmeni[MAXDELKA];
        float prumer;
    } Student;
    qsort(bakaweb, 5, sizeof(Student), srovnaniprumeru);
    system("PAUSE");
    return 0;
}

您在正确的轨道上。这是需要改进的领域:

  • 您的代码不完整:您没有阅读学生详细信息。您可以将fscanf()用于此。

  • 您根据将等级转换为int进行排序。如果等级不是全数字,这可能是不正确的。

完成您的代码并以此方式修复分类功能:

int srovnaniprumeru(const void *a, const void *b) {
    float c = ((const Student *)a)->prumer;
    float d = ((const Student *)b)->prumer;
    if (c > d) return -1;
    if (c < d) return 1;
    return 0;
}
相关文章: