Dein Ansatz ist gar nicht verkehrt, nur die Umsetzung ist in die Hose gegangen.
Es fängt damit an, dass du sizeof benutzt. sizeof wird nicht dein String-Array durchsuchen und, ohne dessen Länge zu kennen, die Längen der darin enthaltenen Strings ermitteln und zusammenzählen. sizeof liefert dir die Größe eines Typen. sizeof(string) ist also dasselbe wie sizeof(char**), in deinem Fall vermutlich 4.
Du musst dich also selbst darum kümmern, die Längen deiner Strings zusammenzuzählen. Und benutz dazu bitte strlen, nicht sizeof.
Außerdem solltest du deinen Ergebnis-String in dem dafür bereitgestellen Speicher zusammensetzen. Du kannst ja gar nicht wissen, ob in string[0] genug Platz ist.
Und schließlich solltets du in main den Rückgabewert von cat in einer Variablen speichern, sonst hast du keine Möglichkeit mehr, den Speicher jemals wieder freizugeben. Ist das jetzt eigentlich cool, "irgend" nicht mehr auszuschreiben? Ich sehe das in letzter Zeit häufiger (und finde es furchtbar).