看似简单的问题却要逼我自杀
很久没用C了,今天朋友问了我一个问题,我却不知道原因。
非常简单的程序,却无法解决,哪有高人能指点迷津
环境:vc++ 2010
-----------------------------------------------
int _tmain(int argc, _TCHAR* argv[]){
int i;
char arr[5];
for(i=0;i<4;i++){
printf("输入第%d个值",i);
scanf("%d",&arr[i]);
fflush(stdin);
}
arr[4]='\0';
printf("%s",arr);
puts("");
system("PAUSE");//pause
return 0;
}
-----------------------------------------------
目的就是输入10进制数字,打印出相应的ASCII码。
我分别输入103,111,111,100后,打印可以显示“good”,
可是程序结束时显示出错,显示“Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted”.
数组arr没有超出范围,为什么会发生这个问题呢?
[解决办法]
数组越界了。
scanf("%d",&arr[i]);