la funzione l'ho fatta in questo modo:

codice:
char *maxpre(char *s1, char *s2){
    char *s3=NULL;
    long int n1=strlen(s1), n2=strlen(s2);
    int k;
    int indiceI=0,indiceJ=0;
    long int min,max;
    
    if(n1<n2){
        min=n1;
        max=n2;
    }
    else{
        min=n2;
        max=n1;
    }
    
    for(int i=0;i<min;i++)
        for(int j=0;j<max;j++)
            if(s1[i]==s2[j]){
                indiceI=i;
                indiceJ=j;
                k=0;
                while(s1[indiceI]==s2[indiceJ] && indiceI<n1 && indiceJ<n2){
                    s3=realloc(s3,(k+1)*sizeof(char));
                    s3[k]=s1[indiceI];
                    indiceJ++; indiceJ++; k++;
                }
            }
        
    
    return s3;
}
ma non funziona e non riesco ad uscirne fuori! qualcuno saprebbe aiutarmi?