Invece di accedere all'array tramite un indice, es.
for(i=0; s[i] != '\0'; i++)
accedi direttamente con un puntatore, es.:
for(; *s != '\0'; s++)
Quindi il tuo for lo puoi cambiare in
for(; *s == *t; s++, t++) {
*out = *s;
out ++;
}
Alla fine, per terminare la stringa out diventa semplice:
*out = '\0';
mentre per la return devi esserti fatto una copia del puntatore out in input (ricorda che &vett[0] è uguale a vett), es.
char *outoriginal=out;
...
return outoriginal;
Oppure invece di salvare il valore originale puoi utilizzare un altro puntatore per fare il ciclo al posto di out e ritornare poi out (alla fine poco cambia).