2014-04-25 102 views
0

我想弄清楚如何使用qsort與字符串數組。我的代碼看起來像這樣。qsort字符串數組,比較

char words[500][256]; 

int numOfWords; // this is calculated above 

int sortWordList() { 
    int length = sizeof(words)/sizeof(char *); 
    qsort(words, length, sizeof(char*), compare); 

} 

int compare (const void * a, const void * b) { 
    const char *pa = *(const char**)a; 
    const char *pb = *(const char**)b; 

    return strcmp(pa,pb); 
} 

但是,我每次都得到「訪問衝突讀取位置0x ### ..」,我不知道什麼是錯的。任何人都能發現我的問題嗎

編輯:感謝您的精彩幫助。你們總是最棒的。

+1

提示:「char」的二維數組與「char」的指針數組不同。 – zwol

回答

1

你是不是您鑄造const void *const char *正確,這樣做,而不是使用:

const char *pa = (const char *)a; 
const char *pb = (const char *)b; 

compare()應高於sortWordList(),只要您sortWordList()使用它。

+0

好的,現在列表得到排序,但是如果我只有90個元素在列表中,空間的最後410個元素首先顯示。有沒有辦法讓我的數據首先顯示? (固定)。 – atzero