我对这段代码有问题,因为它无法正确编译。我犯了个错误:
初始化“loebsdata2017”(又名“struct loebsdata2017”)
具有不兼容类型“loebsdata2017*”的表达式(也称为“struct
loebsdata2017*');取消引用*
我不知道我的代码该怎么改。

int sammenlign_hold (const void *p1, const void *p2);
void opgave_2 (loebsdata2017 *alle_loebsdata2017) {
    int i = 0;
    for (i = 0; i < MAX_PERSONER; i++) {
        qsort (alle_loebsdata2017, 792, sizeof (loebsdata2017), sammenlign_hold);
        if(strcmp(alle_loebsdata2017[i].nationalitet, "DEN") == 0)
        {

            printf("%s    \n", alle_loebsdata2017[i].rytternavn);
        }
    }
}

int sammenlign_hold (const void *p1, const void *p2) {
    loebsdata2017 resultat1 = (loebsdata2017 *)p1,
    loebsdata2017 resultat2 = (loebsdata2017 *)p2;

    return strcmp(resultat1 -> rytterhold, resultat2 -> rytterhold)
}

最佳答案

您似乎忘记了指针声明中的*

int sammenlign_hold (const void *p1, const void *p2) {
    loebsdata2017 *resultat1 = (loebsdata2017 *)p1;
    loebsdata2017 *resultat2 = (loebsdata2017 *)p2;

    return strcmp(resultat1 -> rytterhold, resultat2 -> rytterhold)
}

10-04 13:28