이름과 나이가 들어있는 entry라는 간단한 구조가 있습니다. 이러한 구조체 배열을 감안할 때 나이를 기준으로 배열을 정렬하고 싶습니다.구조와 함수에 대한 포인터
다음은 이것을 적용하려는 나의 시도입니다. 지금은 이것을 컴파일 할 수 없습니다. 내 포인터 논리를 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