2010-05-25 3 views
2

Ive получил задачу в C для сортировки-структуры с помощью QSortсортировать массив структуры по значению атрибута

struct user { 
    enum SEX{m, f} sex; 
    char name[32]; 
    char phonenr[32]; 

}; 
typedef struct user User; 

пользователей будут сохранены в массиве из 25 элементов

но как-то сделать я их на что-то вроде имени?

+1

Вы знаете, как использовать qsort? –

ответ

7

В этом случае это довольно просто, так как strcmp прекрасно работает с qsort. Попробуйте:

int compareUser(const void *v1, const void *v2) 
{ 
    const User *u1 = v1; 
    const User *u2 = v2; 
    return strcmp(u1->name, u2->name); 
} 

Затем использовать его как это:

qsort(array, 25, sizeof(User), compareUser); 

Удачи!

+0

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

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