首页 > 解决方案 > 基于单个/多个动态结构字段的结构数组排序

问题描述

我的结构如下:

typedef struct cellular_phone{
    int id;
    char name[40];
    int ram;
    char cpu[20];
    int display_ppi;
    double display_size;
    char display_resolution[10];
    char size[15];
    int weight;
    char notes[500];
    int id_manufacturer;
    int id_os;
}phone;

我试图让用户能够根据他选择的字段对此类结构的数组进行排序;例如:按 id_os 排序,如果对名称进行相等排序我要使用的算法是 c 的 qsort()。

我认为实现这一点的一种可能方法是为每种类型创建一个函数并使用 if/else 链来检查用户输入。显然,这将是非常低效的,并且几乎不可能与多个字段一起使用。C 也不支持反射,因此即使将用户输入与结构成员进行比较也是不可能的。

我对 C 很陌生,所以我不知道这种做事方式是否正确,我愿意接受建议

标签: carrayssortinglinked-listuser-input

解决方案


推荐阅读