Il segmentation fault è dovuto al fatto che si va a scrivere in una zona non allocata.
Il puntatore s punta alla stringa "salerno" mentre avrebbe bisogno di un pò più di spazio...
int main()
{
//char *s="salerno";
char s[80];
char *t="byeeeee";
char *ptr;
strcpy( s, "salerno" );
ptr=f(s,t);
printf("concatenazione: %s\n",ptr);
}
Comunque se si vuole sostituire la strcat() io ne farei una versione che controlla lo spazio a disposizione, aggiungendo un parametro intero che indica lo spazio allocato per la prima stringa (nell'es. qui sopra 80).