2016-08-23 7 views
-1

У меня есть:-структураКак отсортировать массив структур с помощью qsort()?

struct data { 
    float goodbye; 
    char balance; 
    unsigned char clouds; 
    float badge; 
    double soda; 
    char bat; 
    short int parcel; 
    char vessel; 
    char spade; 
    long int cover; 
    unsigned long int hobbies; 
    short int voyage; 
    int stomach; 
    char sort; 
    char system [11]; 
    unsigned short adjustment; 
}; 

Мне нужно создать массив структур, а затем иметь возможность сортировать различные элементы структур с использованием функции qsort.

Я просмотрел другие вопросы, заданные ранее, однако ни один из них, похоже, не работает для моего приложения.

Я пытался что-то вроде следующего:

static int cmpr(const void *a, const void *b) { 
     if (((data*)a)->goodbye < ((data*)b)->goodbye) 
      return 1; 
     else if (((data*)a)->goodbye > ((data*)b)->goodbye) 
       return -1; 
     else 
     return 0; 
    } 

Это не работает для меня тоже, как я получаю 'data is undeclared in this function'

+1

Можете ли вы сказать, каким образом он не работает на вас? Какой результат вы получаете? – ameyCU

+7

'(data *)' -> '(struct data *)' возможно – 4386427

ответ

1

Тип вашей структуры является struct data, а не только data.

В C++ ваш код будет работать нормально. В C, однако, для имен структуры требуется ключевое слово struct.

Итак, измените свои отливки с (data*) на (struct data*).

Смежные вопросы