2010-02-20 3 views
2

J'ai des problèmes avec la notation de pointeur/tableau utilisée. J'ai deux listes et je suis en train de les trier, puis j'essaie de les afficher. J'ai eu 3 commentaires dans mon code ci-dessous sur ce que sont les déclarations et pourquoi. Mon code ressemble:Aide avec des pointeurs en C en utilisant 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

S'il s'agit de devoirs, ajoutez l'étiquette 'devoirs '. –

Répondre

1

Cela semble être les devoirs, donc je vais répondre de telle manière à (je l'espère) vous conduire dans la bonne direction. La fonction bsearch() recherche un un élément dans une liste triée et retourne son emplacement ou un indicateur indiquant qu'il n'a pas été trouvé. Votre code tel que posté ci-dessus semble utiliser bsearch() d'une manière différente.

Envisager de traiter chaque inscrit individuellement, et d'utiliser bsearch() plus d'une fois pour voir si chaque inscrit figure dans la liste des participants. Si ce n'est pas le cas, affichez le nom du titulaire. Ne pas oublier que bsearch() ne fonctionne correctement que si la liste est triée.

Questions connexes