Spróbuj zamiast zamieniać kolejne elementy stringa, dodawać poszczególne litery.
dest = "";
int i;
for(i = 0; i < len; i++)
dest += src[i];
dest += '\n';
Sam sposób, w jaki próbujesz przekopiować wartość, też jest dziwny. Po co pobierać stringa, który i tak będzie zmieniony? Nie lepiej zadeklarować pustego string w funkcji i potem go zwrócić?