xdoj字符数组元素排序C语言

xdoj字符数组元素排序 输出结果和样例相同,但给的0分,请问是为什么?

/*
从键盘输入一个字符串,将此字符串按字符的ASCII码值从小到大排序,
并显示排序后的字符串。
输入说明:共一行,输入一个字符串
输出说明:共一行,输出排序后的字符串
输入样例:Fdjn4e5
输出样例:45Fdejn
*/
#include 
#include 
int main(void)
{
    char *p;
    gets(p);
    int n=strlen(p);
    int i, j;
    for (i=0; i-1; i++)
    {
        for (j=i+1; jif (p[i]>p[j])
            {
                char s=p[i];
                p[i]=p[j];
                p[j]=s;
            }
        }
    }
    puts(p);
    return 0;
}

char *p 改成 char p[1001]; //你得给指针分配空间
puts改为printf("%s",p);