1
我正在使用內置的qsort對結構數組進行排序。但在調用qsort之後,數組中的最後一個元素似乎具有它的值,即我將其設置爲空。c 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應該調用「compareByName」(不帶「&」!)。 strcasecmp不是ANSI C – user411313 2010-10-31 12:28:46
有沒有也沒關係,但是&只是多餘的。 – nos 2010-10-31 12:31:47
感謝您的完美幫助。 – Ben 2010-10-31 23:49:32