2012-12-06 4 views
0

현재 qsort 함수를 사용하여 구조체 내의 특정 필드에 의해 구조체 배열을 정렬하는 방법을 찾고 있지만 시작점을 사용할 수 있습니다.C 배열을 Char 배열 필드별로 배열 정렬

여기 내 현재 구조체 배열입니다 : 내가 순으로 "이름"필드에 의해이 문제를 정렬 할 수 있도록하고 싶습니다

/* database struct */ 
typedef struct node { 
    char  name[MAX]; 
    char  lname[MAX]; 
    char  address[MAX]; 
    char  number[MAX]; 
}record_type; 

/* global variables */ 
record_type record[100]; 

(A-Z). 각 char 배열의 모든 항목은 소문자입니다. 이 온라인 또는 C 책에 대한 정보를 찾는 데 어려움을 겪고 있습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있을까요?

+0

에서

qsort(record, 100, sizeof(record_type), compare_record_type) 

더 많은 정보는 관련 링크를 참조하십시오. 다음은 비슷한 [one] (http://stackoverflow.com/questions/6105513/need-help-using-qsort-with-an-array-of-structs?rq=1)입니다. 기본적으로 qsort 메서드를 사용해야합니다. –

답변

4

qsort의 서명대로.

void qsort (void * base, size_t num, size_t size, 
      int (* compar) (const void *, const void *)); 

비교 기능을 정의하십시오.

int compare_record_type(const void* a, const void* b) { 
    return strncmp(((*record_type)a)->name, ((*record_type)b)->name, MAX) 
} 

이렇게 qsort를 호출하십시오. cplusplus.com