char message[]=" doesn't have an amount.\nUse Default?";
char *temp=strcat(letter,message);
This does not work. Letter does not have enough space to store itself + message. Also, temp is pointing at letter now, I hope you realize that (it is not a separate copy). Just use std::strings, they'll make your life a lot easier.
For some strange reason, I was thinking that *temp received the combined strings, and since I was getting the correct message... let's just go with I need to bang my head on a C++ book. Maybe it'll knock some knowledge into it. :)
Thanks for the suggestion to use strings, it works quite well.