Здесь есть несколько проблем, кроме пропавшего NULL
терминатора, на который уже указывали другие:
Использование устаревшей и опасной функции gets
.
Функция не предоставляет средств для предотвращения переполнения буфера массива назначения, учитывая достаточно длинную входную строку. std::gets
устарел в C ++ 11 и удален из C ++ 14.
std::fgets
может использоваться вместо.
Использование массива переменной длины (который может быть расширением компилятора) в функции Reverse
, функция, которая не поддерживается стандартом C ++.
char output[str.size()];
Поскольку вы уже используете std::string
в своей программе, вы можете использовать его и для переменной output
, и это решит вашу проблему с NULL
завершением.
И если вам не мешают использовать стандартные библиотечные алгоритмы, вы можете использовать std::reverse
вместо функции Reverse
.