У меня есть простая структура, называемая входом, которая содержит имя и возраст. Учитывая массив этих структур, я хочу отсортировать массив по возрасту.Указатели на структуры и функции
Ниже я попытался применить это, на данный момент я даже не могу его скомпилировать. Я думаю, что моя логика указателя неверна как в сравнении сравнения операторов if, так и с последующей перестановкой указателей. Я пробовал разные способы сделать то же самое, но я никуда не денусь. Я довольно новичок в C, и я все еще пытаюсь склонить голову к указателям, поэтому, наверное, это нечто основное, что я недопонимаю. Может ли кто-нибудь объяснить, что я делаю неправильно ниже?
Любая помощь была бы принята с благодарностью.
#include <stdio.h>
struct entry {
char name[15];
int age;
};
void entrySort(struct entry *dict);
void entrySort(struct entry *dict){
int i,j; // counters
int ct = 4;
struct entry *tmp; // temporary holder
for(i = 0; i < ct; i++){
for(j = 0; j < ct; j++){
if ((*dict[i].age) > (*dict[j].age)){
tmp = (dict + i);
(dict+i) = (dict+j);
(dict+j) = tmp;
}
}
}
int main (void){
int ct = 4, i;
struct entry reg[4] =
{{ "John", 24 },
{ "Alan", 18 },
{ "Jim", 40 },
{ "Sarah",32 }};
entrySort(reg);
for(i = 0; i < ct; i++)
printf("name: %s. Age: %d\n", reg[i].name, reg[i].age);
return 0;
}
Вы можете использовать 'qsort'? Это будет намного проще. – nneonneo
Основная цель была не в том, что она сама по себе, это было больше, чтобы понять, как правильно использовать указатели. – user1895961