#include #include // join will return a pointer of type 'char' char* join(const char*, const char*) ; char* joinb(const char*, const char*) ; int main() { std::cout << join("alpha","bet") << std::endl ; std::cout << joinb("duck","soup") << std::endl ; return 0 ; } /* this function is owner of new_str, * since it doesn't delete it, there is leakage */ char* join(const char* str1 , const char* str2) { /* use 'new' because we don't know how big the strings are going to be * the length should be 'strlen(str1) + strlen(str2) + 1' * since strlen does not count the null bytes we need to add one */ int size = strlen(str1) + strlen(str2) + 1; char* new_str = new char[size]; *new_str = 0; // Null String strcat(new_str, str1); // new_str = 0 + str1 strcat(new_str, str2); // new_str = new_str + str2 return new_str; } char* joinb(const char* str1 , const char* str2) { // size should be 2 more than required for the strlens to // incorporate the space and the null byte int size = strlen(str1) + strlen(str2) + 2; char* new_str = new char[size]; *new_str = 0; strcat(new_str, str1); strcat(new_str, " "); // insert space, note it is important to have it as a string => \" strcat(new_str, str2); return new_str; }