这是我声明的数据类型:
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);
答案 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);