На всякий случай, если вы хотите понять, как это работает (без «черного ящика») или если вам нужно, чтобы материал летал (без вызовов функций), вот несколько советов для вас:
// 0123456789
char date[] = "30-05-2001"; // DD-MM-YYYY
int day, month, year;
day = (date[0] - '0') * 10 + (date[1] - '0');
month = (date[3] - '0') * 10 + (date[4] - '0');
year = (date[6] - '0') * 1000 + (date[7] - '0') * 100 + (date[8] - '0') * 10 + (date[9] - '0');
Это (непроверенный) код ближе к правильному способу делать то, что вы хотели сделать, поскольку он делает только то, что вам нужно (не больше, не меньше).Безопасный, маленький, простой, БЫСТРЫЙ.
Если вы не уверены в дате (ввод пользователя), вам придется проверить ее действительность (или принять идею жить с недопустимыми датами в вашем приложении).