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