visual studio 2012 调试C语言碰到的中断,希望指教
visual studio 2012 调试C语言遇到的中断,希望指教int _tmain(int argc, _TCHAR* argv[]){int a[20],c[5],
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数组的长度了
[解决办法]数组越界问题。
[解决办法]判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据改变断点。