Sono riuscito a migliorare qualcosa, adesso il problema è che tutte le parole che servono le mette alla fine
ESEMPIO
st1: Ciao pippo
st2: o
st3: crudo
risultato: ciao pippocrudocrudo
valore restituito: 2


#include <cstdlib>
#include <iostream>
#include <cstring>
#include <string>
using namespace std;


int concatena(char st1[],char st2[],char st3[],int N,int S,int P)
{


if(N==0)
return NULL;
else
if(S==0)
return NULL;
else
cout<<"PASSO";
if(st1[N-1]==st2[S-1])

{
strcat(st1,st3);

return 1+concatena(st1,st2,st3,N-1,strlen(st2),strlen(st3));
}
else
return concatena(st1,st2,st3,N-1,strlen(st2),strlen(st3));
}
int main(int argc, char *argv[])
{
char st1[100];
char st2[100];
char st3[100];



cin.getline(st1,100);
cin.getline(st2,100);
cin.getline(st3,100);
cout<<"VALORE RESTITUITO:";
cout<<concatena(st1,st2,st3,strlen(st1),strlen(st2 ),strlen(st3))<<endl;
cout<<"RISULTATO FINALE"<<endl;
cout<<st1<<endl;
system("PAUSE");
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}