2014-01-15 55 views
0
#include <stdio.h> 

typedef struct 
{ int occurrence 
    char charArray[101]; 
}Wordy; 


int comparing(const void *a, const void *b) 
{ 
    //.... 
} 

int main(void) 
{ 
     int i=0; 
    Wordy array[99999]; 

    //..... 



    return 0; 

} 

*/ 

該程序讀取文件中的單詞,然後計算該單詞的出現次數。一切正常,但我不認爲qsort函數在比較函數中正常工作。根據其發生情況,假設對array進行排序。 (尋找它的發生是正確的。)使用qsort對結構數組進行排序

我的示例文本文件:

zero one 
two zero 
three three 

輸出:

Before: zero one two three 

After: one two three 

(請注意,零丟失排序後)

+2

你可以參考'array [1] .word'和'array [0] .word',但是'Wordy'沒有名爲'word'的成員,是否會編譯? – Kninnug

回答

2

此:

qsort(array, i, sizeof(int), comparing); 

is wro ng,array不是int的數組,它是Wordy的數組。當您將錯誤的元素大小指定爲qsort()時,結果或多或少是隨機的,因爲您要獲取int大小的Wordy結構數組的「片」的指針。

嘗試:

qsort(array, i, sizeof array[0], comparing); 
0

是不是因爲你的printf報表有什麼不同? wordcharArray排序不同。

之前:

數組[0] .charArray,陣列[1] .word,陣列[2] .charArray,陣列[3] .charArray);

後:

數組[0] .word,陣列[1] .charArray,陣列[2] .charArray,陣列[3] .charArray);