函数按结构成员排序结构数组

时间:2017-11-13 11:51:21

标签: c

这是我的问题: 让我们说我有一个结构:

enum color{Black, Red, White};
struct car
{   int weight;
    int price;
    enum color my_color;
};

我已经初始化了10个元素数组:

struct car cars[10];

for (int i = 0; i < 10; i++)
    {
        cars[i].weight = (rand() % 1000); // do not mind the number values
        cars[i].price= (rand() % 1000);
        cars[i].my_color= (rand() % 2);
    }

现在我的工作是编写一个返回有序数组的函数,并且传递的参数应该是结构成员(权重,价格,颜色)。我知道有很多排序算法,但我不知道如何只使用其中一个成员对它进行排序。这个排序功能怎么样?

1 个答案:

答案 0 :(得分:1)

在C语言中,没有办法在语法上访问struct成员,以便对它们进行一些通用的比较。话虽这么说,通常的方法是调用引入hereqsort库函数来执行排序。它被设计为将函数指针作为一个agrument;这将用于实现和提供实际比较的功能。

要解决问题中的任务,有必要为car类型的每个成员实现比较功能。