Я использую встроенный qsort для сортировки массива структур. Но после вызова qsort последний элемент в массиве, похоже, имел значение, которое я сортирую, по установленному на пустое.
Вот мой код...
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 );
}
}
}
Я должен упомянуть, что если я закомментирую строку, которая вызывает qsort, то все записи будут отображаться правильно, но когда вызывается qsort, все записи отображаются (не отсортированы) и печатается пустое значение для заголовка для последней записи.