구조체 배열을 qsort 써서 정리하려하는데..
qsort 알고리즘은 잘 모르지만 까라면 까래서 일단 사용법만 보고 만들어봤는데 오류를 못잡겠네요
qsort(temp, SIZE, sizeof(Bookdata), compare_qty);
.
.
.
int compare_date(const void *x, const void *y){
int x_d[3] = { 0 }; //month, day, year
int y_d[3] = { 0 };
char date[30];
char date2[30];
strcpy(date, ((Bookdata*)x)->dateAdded); // dateAdded는 월/일/년 이 입력된 문자열
date_(date, x_d);
strcpy(date2, ((Bookdata*)y)->dateAdded);
date_(date2, y_d); //오류나는 지점!!!
if (x_d[2] != y_d[2])
return x_d[2] - y_d[2];
else if (x_d[0] != y_d[0])
return x_d[0] - y_d[0];
else
return x_d[1] - y_d[1];
}
void date_(char date[], int ar[]){
char *temp;
char *delimiter = "/";
temp = strtok(date, delimiter);
ar[0] = atoi(temp); //month
temp = strtok(NULL, delimiter);
ar[1] = atoi(temp); //day
temp = strtok(NULL, delimiter);
ar[2] = atoi(temp); //year
}
다른건 다 맞는거 같은데
const void* y 값이 이상하게 잡혀가지고 오류가 나네요ㅠㅠ
qsort 들어가기전에 배열에 전부다 값 들어가있는거 확인했고, 다른 sort는 잘 되는데 저것만..
아직 오류가 나면 어디서부터 어떻게 접근해서 잡아야할지 감이 안와서.. 오늘 하루 종일 붙잡고있었는데 해결 못함...
무슨 말을 하는지 모르겠다. 이유는 내가 멍청해서 그렇다 ㅠㅠ
strcpy(date2, ((Bookdata*)y)->dateAdded);
dateAdded 값이 제대로 다 들어가 있는데 전달을 못받음 ㅠㅠ
char date2[30]; 이렇게하면 초기화가 안 되서 그런 거 아닐까?
초기화 때문은 아닌듯.. 쓰레기값 들어있어도 cpy만 잘되면 되는데 cpy가 안됌..
date1은 잘 들어가는데 ㅠㅠ
y가 가리키는 월/일/년 문자열 좀 말해주세요
NoOTL//되서->돼서
죽고싶다//됌->됨
오류 코드도
전체코드올리셈