繁体   English   中英

使用qsort排序结构数组

[英]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语句有所不同吗? wordcharArray命令不同。

之前:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM