#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
的出现进行排序。 (发现它的发生是正确的。)
我的示例文本文件:
zero one
two zero
three three
输出:
Before: zero one two three
After: one two three
(注意排序后零缺失)
答案 0 :(得分:2)
此:
qsort(array, i, sizeof(int), comparing);
错误,array
不是int
的数组,它是Wordy
的数组。当您将错误的元素大小指定为qsort()
时,结果或多或少是随机的,因为您将获得指向int
结构数组的Wordy
大小“切片”的指针。
尝试:
qsort(array, i, sizeof array[0], comparing);
答案 1 :(得分:0)
是因为您的printf
陈述不同吗? word
和charArray
订购的方式不同。
在:
array [0] .charArray,array [1] .word, array [2] .charArray,array [3] .charArray);
后:
array [0] .word,array [1] .charArray, array [2] .charArray,array [3] .charArray);