输入10个等长字符串,再排序输出

问题遇到的现象和发生背景

在主函数输入十个等长的字符串,用另一函数进行排序,然后在主函数输出这10个排好序的字符串。

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
int main()
{
    void sort(char* s[]);
    char *p[10],a[10][20], i;
    for (i = 0;i < 10;i++)
    {
        p[i] = &a[i][0];
    }
    printf("请输入十个等长的字符串");
    for (i = 0;i < 10;i++)
    {
        scanf_s("%s", p[i]);
    }
    sort(p);
    for (i = 0;i < 10;i++)
    {
        printf("%s\n", p[i]);
    }
    return 0;

}
void sort(char* s[])
{
    int i, j;
    char* temp;
    for (i = 0;i < 9;i++)
    {
        for (j = 0;j < 9-i;j++)
        {
            if (strcmp(*(s +  j), *(s +  j + 1)) > 0)
            {
                temp = *(s + j);
                *(s +  j ) = *(s + j + 1);
                *(s + j + 1) = temp;
            }
        }
    }
}

运行结果及报错内容

img

我想要达到的结果

哪里有问题啊,这个异常怎么解决

scanf_s("%s", p[i],20);