C语言中读取位置时发生访问冲突该怎么办

#define n 2
int remember[n];
for(i=0;i<n;i++)
remember[i]=i;
remember[n]=\0
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
if(h[remember[i]].score<h[j].score)
k=remember[i];
remember[i]=remember[j];
remember[j]=k;

        }              // 用冒泡排序方法,用辅助数组记住头结点下标
        for(i=0;i<n;i++)
        {
             printf("\n\n*****学校编号:%d\n",h[remember[i]].schoolnum);                                           
           printf("*****学校总分:%d\n" ,h[remember[i]].score);
             printf("*****男团总分:%d\n",h[remember[i]].mscore);
             printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);
 int remember[n];

下标范围是0..n-1,没有n,你下面有

 remember[n]=\0

显然下标越界了,另,这句里\0是否因为显示问题而缺少引号?否则这样好像语法有问题。

按数组操作,没有必要赋值 remember[n]=\0
一般只有将数组当成字符串操作时,才会考虑在最后一个下标赋零,防止字符串没有结束符。但前提是不能越界!

如果一定要赋零零值,可以考虑定义时增加一个元素,如:int remember[n + 1];

骚年,编程的时候要仔细,a[k++]=c;你的k的初值是多少啊?
你没给k赋初值,计算机怎么知道a[k++]在那里啊?当然会抛出异常了!根据你这个题目的意思,在函数头加个int k=0.就好了。

remember[n]=\0,数组越界,破坏了程序

你Debug下调试一下,看看,确保你的h[remember[i]]数组下标没有越界。

int remember[n];这是声明,没有初始化。仍然是数组越界