그래서 qsort를 사용하여 "key"라는 구조체 내의 int 값을 기반으로 구조체 배열을 정렬합니다. 하지만 내 배열이 제대로 채워 지긴하지만, 그것은 내 구조체를 정렬하는 것으로 보이지 않습니다 ...qsort 비교 함수가 호출되지 않았습니까?
그것은 qsort가 결코 내 비교 함수를 호출하지 않는 것처럼 보일 것입니다. 함수 내의 print out 문에 대한 간단한 테스트는 이것을 보여줍니다. 내 "테스트"는 나타나지 않습니다.
비교 기능 :
int compare (const void *a, const void *b){
struct Record* a_r = (struct Record*)(a);
struct Record* b_r = (struct Record*)(b);
/*test*/
printf("test");
return (a_r->key - b_r->key);
}
내를 qsort 전화 :
qsort(arr, (sizeof(arr)/sizeof(struct Record)), sizeof(struct Record), compare);
이 문제가 내 비교 기능과인가? 아니면 올바른 변수를 전달하지 않습니까?
내 어레이 선언 : 도착이 struct Record *
를 정의한 바와
struct Record *arr = malloc(size->st_size); //where st_size is stat() of input file
Ohmygoodness, 예. 와우. 나는 그것을 놓치기 때문에 어리석은다고 느낀다. – katiea