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

------解决方案--------------------
------解决方案--------------------
输入-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数组的长度了
------解决方案--------------------
数组越界问题。
------解决方案--------------------
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据改变断点。
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数组的长度了
------解决方案--------------------
数组越界问题。
------解决方案--------------------
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据改变断点。