Piszę tylko o rozwiązaniu w c++.
Tablica [i każda inna zmienna] zadeklarowana lokalnie, widoczna jest tylko lokalnie, a więc tablica merged, mimo, że podajesz na zewnątrz jej adres jest na zewnątrz funkcji string_merge już niedostępna. Tablice tworzone dynamicznie, instrukcją new, istnieją do momentu ich skasowania - instrukcją delete []. I właśnie tak rozwiązać zadanie proponuje autor:
i umieści w nowej dynamicznie alokowanej tablicy znaków, do której zwróci wskaźnik
Można zadanie rozwiązać oczywiście po swojemu, ale czy testowałeś swoje na ideone.com?
http://ideone.com/jmvnO281 :
stdout:
Standard output is empty
Jeżeli chodzi o php, to nie wiem co jest źle, ale tu masz poradnik na temat wczytywania: http://pl.spoj.com/forum-old/viewtopic.php?f=10&t=1815&sid=953b96c5c2009656fa7df4b4d0f9e5cf21
PS
Ja, nie chce mi się liczyć, ale raczej dałbym: T_SIZE * 2 + 1
i zamiast:
if(!s1[i] || !s2[i])
napisałbym [dla mnie czytelniejsze]
if (s1[i] == '\0' || s2[i] == '\0')