You change the value of kchar when you assign the return of new char[] to it. However this change is lost when the functions ends because kchar is local to your function. Your char* ch outside the function is therefore still uninitialized when you come to print it.
What I have done is to pass the pointer by reference, meaning kchar is no longer a copy of the parameter you pass in (ch) but it is a direct reference to it. That means that the pointer you pass in (ch) gets updated, rather than only a copy that is local to the function.