// strtest.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
struct Bookdata
{
char dateAdded[30];
};
void toArray(char date[], int ar[]){
char *temp;
const 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
}
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] = { 0, };
char date2[30] = { 0, };
Bookdata* b = (Bookdata*)x;
strncpy(date, b->dateAdded, sizeof(b->dateAdded)); // dateAdded는 월/일/년 이 입력된 문자열
toArray(date, x_d);
b = (Bookdata*)y;
strncpy(date2, b->dateAdded, sizeof(b->dateAdded));
toArray(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];
}
int _tmain(int argc, _TCHAR* argv[])
{
Bookdata b[4];
const char d1[] = "12/12/2015";
const char d2[] = "12/13/2015";
const char d3[] = "11/12/2013";
const char d4[] = "10/12/2013";
strncpy(b[0].dateAdded, d1, sizeof(d1));
strncpy(b[1].dateAdded, d2, sizeof(d2));
strncpy(b[2].dateAdded, d3, sizeof(d3));
strncpy(b[3].dateAdded, d4, sizeof(d4));
qsort(b, 4, sizeof(Bookdata), compare_date);
return 0;
}
이거 돌려봤는데 정상이네..