Strasznie komplikujesz sobie drogę. Skoro używaj w kodzie std::string nie widzę powodu operowania na char* itp. Zrób funkcję przyjmującą dwa stringi:
#include <algorithm>
#include <iostream>
#include <string>
std::string string_merge(const std::string& first, const std::string& second)
{
unsigned minSize = std::min(first.length(), second.length());
std::string result(2 * minSize, ' '); // string o rozmiarze 2 * minSize wypełniony ' '
for (unsigned i = 0u; i < minSize; ++i)
{
// ...
}
return result;
}
int main()
{
unsigned t;
std::cin >> t;
for (unsigned i = 0; i < t; i++)
{
std::string a, b;
std::cin >> a >> b;
std::cout << string_merge(a, b) << "\n";
}
}
Z zadania wiesz, że znaki 2 * i mają pochodzić z pierwszego łańcucha, a 2 * i + 1 z drugiego. Teraz wystarczy dopisać odpowiednie dwie linie kodu.