Если он правильно читает (что я предполагаю) студенческой структуре 'object' stu
, один из подходов состоит в том, чтобы сохранить их все в массиве (лучше всего динамически размещать в куче, иначе простодостаточно большой, чтобы держать их всех [осторожно с этим!]), а затем отсортировать их по stdlib.h
'qsort()
.
Я могу предложить помощь по динамическим массивам, если вы хотите, но я уверен, что некоторое прибегание к помощи также сделало бы уловку.
Если бы у вас был массив структур учеников (которые я также предлагаю вам ввести typedef), но для ясности этого ответа я не буду называть arr
, вы можете отсортировать их следующим образом:
- Первый
#include <stdlib.h>
вверху файла Затем следующая функция для сравнения их идентификаторов с strcmp:
int student_cmp(const void* a, const void* b)
{
struct student* studentA = (struct student*)a;
struct student* studentB = (struct student*)b;
return strcmp(studentA->ID, studentB->ID);
}
И, наконец, вы можете вызвать qsort
в вашем sort_accord_id()
следующим образом:
qsort(arr, 2, sizeof(struct student), student_cmp);
Дайте мне знать, если у вас есть другие вопросы.И добро пожаловать в Stack Overflow!