The given dates are valid dates between the years 1971 and 2100.
Solutions
staight forward
int numleaps(int y) {
return y / 4 - y / 100 + y / 400;
}
int getday(int y, int m, int d) {
const int month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day = (y - 1) * 365;
day += m <= 2 ? numleaps(y - 1) : numleaps(y);
for (int i = 0; i < m - 1; i++)
day += month[i];
day += d;
return day;
}
int daysBetweenDates(char * date1, char * date2){
int y, m, n;
sscanf(date1, "%d-%d-%d", &y, &m, &n);
int day1 = getday(y, m, n);
sscanf(date2, "%d-%d-%d", &y, &m, &n);
int day2 = getday(y, m, n);
return abs(day1 - day2);
}