Вы не инициализировали dest
char dest[1020] = ""; //should fix it
Вам просто повезло, что так случилось, что 6-е (случайное) значение в dest
было 0
.Если бы это был 1000-й символ, ваше возвращаемое значение было бы намного длиннее.Если бы оно было больше 1024, вы бы получили неопределенное поведение.
Строки в виде массивов char
должны быть разделены 0
.В противном случае невозможно сказать, где они заканчиваются.В качестве альтернативы вы можете сказать, что строка заканчивается нулевым символом, явно установив ее на 0;
char dest[1020];
dest[0] = 0;
Или вы можете инициализировать весь массив с помощью 0 *
char dest[1024] = {};
И так как ваш вопроспомечен C++
Не могу не отметить, что в C ++ мы используем std::string
s, которые избавляют вас от головной боли.Оператор + может использоваться для объединения двух std::string
с