// 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;
}