我对使用的一些指针/数组表示法有问题我有两个列表,正在对它们进行排序,然后尝试显示它们我在下面的代码中有3条关于声明的内容和原因的注释我的代码看起来像:

int Compare(const void *a, const void *b);

void SortStudents(char *studentList[], size_t studentCount)
{
    qsort(studentList, studentCount, sizeof(studentList[0]), Compare);
}

int Compare(const void *a, const void *b)
{
    return (strcmp(*(char **)a, *(char **)b));
}

/*Determines which registrants did not attend the first meeting by searching for registrants
 that are not in attendees set. */
void DisplayClassStatus(
                        const char *registrants[], size_t registrantCount,
                        const char *attendees[],   size_t attendeeCount)
{
    char **missedFirstMeeting; // not sure if this is the right declaration
    char *start, *end;

    // not sure if this is right with the &attendees and registrants for the bsearch()
    missedFirstMeeting = bsearch(&attendees, registrants, attendeeCount,
                                 sizeof(attendees[0]), Compare);
    printf("Missed First Meeting: \n");

   //not sure if this the way to traverse through the array using pointers to display
    for (start = missedFirstMeeting, end = &missedFirstMeeting[registrantCount-1]; start < end; ++start) {
        printf("%s", *start);
    }
}

最佳答案

这似乎是家庭作业,所以我会以这样的方式回答(希望)引导你朝着正确的方向。
bsearch()函数在排序列表中搜索一个元素,并返回其位置或一个表示未找到该元素的指示器上面发布的代码似乎以不同的方式使用了bsearch()
考虑单独对待每个注册人,并多次使用bsearch()查看每个注册人是否在与会者列表中如果没有,则显示注册人姓名别忘了bsearch()只有在对列表进行排序时才能正常工作。

关于c - 使用qsort,bsearch帮助C中的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2304040/

10-11 21:14