Что у нас такое cur_dir?
У функции strcat_s три параметра…
errno_t strcat_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
В C++ есть также шаблонная перегрузка с двумя параметрами.
template <size_t size>
errno_t strcat_s(
char (&strDestination)[size],
const char *strSource
); // C++ only
Вывод такой. Перегрузка с двумя параметрами принимает первым параметром только массив, но не char*.
P.S. А лучше, конечно, будет использовать контейнеры наподобие std::string.