C语言printf无法正常输出内容

无法正常输出内容

#include
//  此函数目的为将所输入数组输出为下一个数组,如【1,3,2】->【3,1,2】,【3,2,1】->【1,2,3】
int *answer(int *array,int n);
int main()
{
    //数组长度
    int number;
    scanf("%d",&number);
    int array[number];
    //数组初始值
    for (int i=0;i"%d",&array[i]);
    }
    int *p=NULL;
    p=answer(array,number);
    for (int i=0;i"%d ",p[i]);
    }
}
//找两个要交换的值即可完成目的(靠右的较小值和较小的较大值)
int *answer(int *array,int number)
{
    //建立左右指针
    int *output=NULL;
    int *left_point=NULL;
    int *right_point=NULL;
    int i;
    //从右往左找出第一个降序,确定较小值。同时当出现类似【3,2,1】时输出最小序列
    for (i=number-1;i>=0;i--)
    {
        if(array[i]<array[i+1])
        {
            left_point=&array[i];
            break;
        }
        if(i==0)
        {
            for (int m=0;marray[number-m-1];
            }
            return output;
            
        }
    }
    //找较大值
    int j;
    for (j=number-1;j>i;j--)
    {
        if(array[j]>array[i])
        {
        right_point=&array[j];
        break;
        }
    }
    //交换
    int *temp=NULL;
    *temp=*left_point;
    *left_point=*right_point;
    *right_point=*temp;
    return array;
}

运行结果及报错内容 segmetation fault.

没仔细看 大致扫了一眼
错误一33行数组越界了 i+1那个
错误二:42行对output是空指针,不能对其解引用,而且数组不能那么写,指针要写那种数组的写法的话要开辟空间(malloc等)
错误三:59,60行对空指针解引用了

if(i==0)
{
for (int m=0;m<number;m++)
{
output[m]=array[number-m-1];
}
return output;

    }

这一段是错误的,output只是一个空指针而已,没有分配空间,怎么就开始赋值了呢

第九行int array[number]; 不能这么初始化数组大小,需要在编译时给定数组大小。