将参数传递给<stdlib.h>中的qsort()函数

时间:2016-04-01 05:12:43

标签: c data-structures std qsort

这是我声明的数据类型:

struct Element{
    char name[21], symbol[4];
    double atomicMass;
    int valence;
};
typedef struct Element myElements;
myElements data[20];

如果我只想传递

的名字成员
data[20] 

到qsort(),怎么做?

不确定这是否是传递给函数的正确方法:

qsort(data->name, 20, sizeof(myElements), compare);

1 个答案:

答案 0 :(得分:3)

你不会传递成员。正确的方法是编写一个帮助器比较函数,它按名称比较2个元素并使用它。

static int
cmpElement(const void *p1, const void *p2)
{
    return strcmp(((const Element *) p1)->name, ((const Element *) p2)->name);
}

qsort(data, 20, sizeof data[0], cmpElement);