Хотел бы выполнить qsort по struct с числом и символом, сначала отсортировать по номеру, а затем отсортировать по алфавиту с тем же номером. Вот структура, которая у меня есть
typedef struct{
char word[101];
int freq;
}WordArray;
Вот логика, которой я следовал: Сортировать поfreq first ()
int cmpffunc (const void * a, const void * b)
{
WordArray *WordArrayA = (WordArray *)a;
WordArray *WordArrayB = (WordArray *)b;
return ( WordArrayB->freq - WordArrayA->freq );
}
qsort(array, arrayLength, sizeof(WordArray), cmpffunc);
Что отлично работает, потом я попытался отсортировать по алфавиту с тем же номером частоты.Вот что я попробовал, но ни один из них не работает должным образом:
int cmpwfunc (const void * a, const void * b)
{
WordArray *A = (WordArray *)a;
WordArray *B = (WordArray *)b;
if (A->freq == B->freq){
return strcmp(A->word,B->word);
}
else{
return -1;
}
}
qsort(array, arrayLength, sizeof(WordArray), cmpwfunc);
Любые предложения будут оценены.