visual studio 2012 调试C语言碰到的中断,希望指教

visual studio 2012 调试C语言遇到的中断,希望指教
visual studio 2012 调试C语言碰到的中断,希望指教

int _tmain(int argc, _TCHAR* argv[])
{
int a[20],c[5],i,n=0,x;
scanf_s("%d",&x,1);
while(x!=-1)
{
if(x>=0&&x<=4)
a[n++]=x;
scanf_s("%d",&x,1);
}
for(i=0;i<5;i++)
c[i]=0;
for(i=0;i<5;i++)
c[a[i]]++;
printf("The result is:\n");
for(i=0;i<5;i++)
printf("%4d",c[i]);
printf("\n");
}

visualstudio2012异常中断

------解决方案--------------------
	while(x!=-1)
{
if(x>=0&&x<=4)
a[n++]=x;//非常容易导致越界
scanf_s("%d",&x,1);
}


------解决方案--------------------
输入-1  第一个while没进
 for(i=0;i<5;i++)
        c[a[i]]++;

a[]没赋值  可能越界吧
------解决方案--------------------
scanf_s("%d",&x,1);

1改大一点。 1表示只能输入一个字符。
------解决方案--------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

------解决方案--------------------
 for(i=0;i<5;i++)
        c[a[i]]++;
此处越界了,a数组没有初始化,为乱码超出c数组的长度了
------解决方案--------------------
数组越界问题。






------解决方案--------------------
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据改变断点。