Я пытаюсь распечатать и отсортировать динамическую память записей в порядке убывания с помощью qsort. Я использую командную строку, чтобы определить, как следует сортировать записи.qsort record (char array) в убывающем порядке
Код для распечатки записей:
void print_records_by_name(record_list *list, int argc, const char *argv[])
{
size_t i;
if (argc == 2) {
if (strcmp(argv[1], "+n") == 0) {
qsort(list->data, list->nused, sizeof(record), sort_name_asc);
} else if (strcmp(argv[1], "-n") == 0) {
qsort(list->data, list->nused, sizeof(record), sort_name_des);
}
}
for (i = 0; i < list->nused; i++) {
fprintf(stdout, "%s %s %d\n", list->data[i].name.last, list->data[i].name.first, list->data[i].score);
}
}
У меня есть код для сортировки его по возрастанию:
int sort_name_asc(const void *p, const void *q)
{
const record *pp = p;
const record *qq = q;
int n1, n2;
n1 = strcmp(pp->name.first, qq->name.first);
n2 = strcmp(pp->name.last, qq->name.last);
if (n2 == 0) {
return n1;
}
return n2;
}
Это то, что я имею в порядке убывания:
int sort_name_des(const void *p, const void *q)
{
const record *pp = p;
const record *qq = q;
int n1, n2;
n1 = strcmp(qq->name.first, pp->name.first); /*just switched the pp and qq*/
n2 = strcmp(qq->name.last, pp->name.last); /*just switched pp and qq*/
if (n2 != 0) {
return n1;
}
return n2;
}
Я скомпилировал его, и он не работает, никаких идей, как это сделать?
Благодаря
_I'm уверен, что это не work_. Ты не уверен? Почему ты не уверен? – ryyker
* «Я уверен, что это не работает» *. Не хотите ли вы уточнить, или это сумасшедшая игра? – Kninnug
Я скомпилировал его и не распечатывал ни нисходящий, ни отсортированный – user2122151