2010-02-20 3 views
2

У меня возникают проблемы с некоторыми используемыми нотами указателя/массива. У меня есть два списка, и я сортирую их, а затем попытаюсь их отобразить. У меня было 3 комментария в моем коде ниже, что это за декларации и почему. Мой код выглядит следующим образом:Помощь с указателями в C с использованием qsort, bsearch

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); 
    } 
} 
+0

Если это домашнее задание, добавьте тег 'homework'. –

ответ

1

Это, как представляется, домашнее задание, поэтому я отвечу таким образом, чтобы (я надеюсь) приведет вас в правильном направлении.

Функция bsearch() выполняет поиск одного элемента в отсортированном списке и возвращает либо его местоположение, либо индикатор, указав, что он не найден. Ваш код, опубликованный выше, по-видимому, использует bsearch().

Рассмотрите возможность обращения к каждому регистранту индивидуально и с помощью bsearch() более одного раза, чтобы узнать, находится ли каждый регистратор в списке участников. Если нет, укажите имя регистратора. Не забывайте, что bsearch() работает корректно, только если список отсортирован.