【C语言】请问这个哪里错了?

从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同字符

void srmerge(char *a,char *b,char *c)
{
    char t,*w;
    w=c;
    while(*a!='\0'&&*b!='\0')
    {
        t=*a<*b *a++;*b<*a *b++;
        (*a++,*b++);
        if(*w=='\0')*w=t;
        else if(t!=*w) *++w=t;
    }
    while(*a!='\0')
    if(*a!=*w) *++w=*a++;
    else a++;
    while(*b!='\0')
    if(*b!=*w) *++w=*b++;
    else b++;
    *++w='\0';
}
    strsort(char *s)
    {
        int i,j,n;
        char t,*w;
        w=s;
        for(n=0;*w!='\0';n++)
        w++;
        for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        if(s[i]>s[j])
        {
            t=s[i];
            s[i]=s[j];
            s[j]=t;
        }
    }
    main()
    {
        char s1[100],s2[100],s3[200];
        printf("\nPlease Input First String:");
        scanf("%s",s1);
        printf("\nPlease Input Second String:");
        scanf("%s",s2);
        strsort(s1);
        strsort(s2);
        s3[0]='\0';
        strmerge(s1,s2,s3);
        printf("\nResult:%s",s3);
    }
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^