如何解决运行时错误的问题?

完成学校C语言时,老是因为运行时错误得0分
麻烦帮我看看是哪里出问题了?

题目是:将一个字符串中的元音字母(a、e、i、o、u)复制到另一个字符串,然后按照ASCII码从小到大的顺序输出。
这是我的代码

#include
char sort(char str[]);
int main()
{
    char str1[100];
    char str2[100];
    char ch;
    int i,j;
    i=0;
    while((ch=getchar())!='\n')
    {
        str1[i]=ch;
        i++;
    }
    str1[i]='\0';
    j=0;
    for(i=0;i<100;i++)
    {
        if(str1[i]<'A' || str1[i]>'z')
        {
            break;
        }
        if(str1[i]=='a' || str1[i]=='e' || str1[i]=='i' || str1[i]=='o' || str1[i]=='u' ||str1[i]=='A'|| str1[i]=='E' || str1[i]=='I' || str1[i]=='O' || str1[i]=='U')
        {
            str2[j]=str1[i];
            j++;
        }
    }
    sort(str2);
    printf("%s",str2);
    return 0;

}
char sort(char str[])
    {
        int a,b,k,d;
        d=0;
        while(str[d]!='\0')
        {
            d++;
        }
        char temp;
        for(a=0;a+11;bstr[b])
                {
                    k=b;
                }
                if(a!=k)
                {
                    temp=str[a];
                    str[a]=str[k];
                    str[k]=temp;
                }
            }
        }
        return 0;
    }

运行结果及报错内容

在我的vs code上运行结果是ok的
一上交就运行时错误

img

你这43行编译都过不去吧