[英]Using qsort To Sort Array Of Structs
#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
(注意排序后零缺失)
这个:
qsort(array, i, sizeof(int), comparing);
错了, array
不是int
数组,它是一个Wordy
数组。 当你为qsort()
指定错误的元素大小时,结果或多或少是随机的,因为你将获得指向Wordy
结构数组的int
-sized“切片”的指针。
尝试:
qsort(array, i, sizeof array[0], comparing);
是因为你的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.