Предполагая (и это может быть неверным предположением), что все данные были отформатированы одинаково, я бы сделал что-то вроде этого
char name[_MAX_NAME_LENTGH], last[_MAX_NAME_LENGTH];
int month, day, year;
sscanf( text_string, "%s %s %2d.%02d.%04d", first, last, &month, &day, &year );
Однако, это имеет проблему, что имена / фамилиив вашем входе есть только одно слово (т.е. это не сработает для таких вещей, как «Джон М. Доу»).Вам также необходимо определить некоторую подходящую максимальную длину для строки.
Трудно быть более определенным в этом решении, если мы не знаем больше о входных данных.