Если вы знаете входная строка в формате "гггг-мм-дд", то вы можете сделать простую перезапись строки в виде:
out[0] = in[8];
out[1] = in[9];
out[2] = '-';
...
Если входСтрока не отформатирована так красиво, тогда вам действительно нужно будет проанализировать строку даты, что является более сложной проблемой.
Стандартный способ сделать это - использовать strptime (), как обсуждалось в:
Преобразовать строку в дату в C
, где строка формата будет выглядеть как "% Y-% m-% d".
Как только вы получитедата, вы можете распечатать его, используя что-то вроде:
printf("%.4d-%.2d-%.2d", tm->tm_year, tm->tm_mon, tm->tm_mday);