J'utilise le qsort intégré pour trier un tableau de structures. Mais après l'appel à qsort le dernier élément du tableau semble avoir eu sa valeur que je suis en train de trier par set à vide.c qsort semble supprimer la dernière valeur dans le tableau
Voici mon code ...
int numEntries = 5;
TvEntry* entries[numEntries]; //create array
//Entries get added to the array here...
qsort(*entries, numEntries, sizeof(TvEntry*), &compareByName); //sort
displayAll(entries, numEntries); //display
//here is my sort method
int compareByName(const void* val1, const void* val2)
{
const TvEntry* entry1 = (TvEntry*)val1;
const TvEntry* entry2 = (TvEntry*)val2;
return strcasecmp(entry1->title, entry2->title);
}
//here is my display method
void displayAll(TvEntry* entries[], int length)
{
if(entries == NULL)
{
printf("List is empty\n");
}
else
{
int i = 0;
for(i = 0; i < length; i++)
{
printf("ENTRY: %s\n", entries[i]->title);
}
}
}
Je dois dire que si je commente la ligne qui appelle qsort toutes les entrées sont correctement affichées mais quand qsort est appelé alors les entrées sont tous affichés (Non Trié) et l'impression d'une valeur vide pour le titre de la dernière entrée.
qsort doit appeler avec "compareByName" (sans "&"!). strcasecmp n'est pas ANSI C – user411313
avec ou sans & n'a pas d'importance, mais le & est juste redondant. – nos
Merci pour l'aide a fonctionné parfaitement. – Ben