C语言 在VS环境下一个很有意思的报错:stack around the variable was corrupted

今天做一个很简单的oj来温习下c 语言  

题目如下

输入

3位正整数

输出

逆置后的正整数

代码如下:

 

#include"stdio.h"
int main()
{
 float h,sum;int inputCount;int n;
 char input[3];
 scanf("%s",&input);n=2;
 while(n>=0)
 {
  if(n==2&&input[n]=='0')
  {
   n--;
   continue;
  }
  if(n==1&&input[n]=='0'&&input[2]=='0')
  {
   n--;
   continue;
  }
  printf("%c",input[n]);
  n--;
 }
 return 0;
}

结果用vs 调试的时候总是在程序结束的时候报错(在return 0;之后)

错误如下:

stack around the variable was corrupted(翻译为:在变量XX周围的堆栈已损坏)

 

 

 

我以为越界了,检查了一下 都没有越界啊,然后网上查了下,貌似答复都是挺奇怪的,还要修改数组默认值什么的。

于是自己就一步步的注释方法 最终锁定在

   char input[3];
 scanf("%s",&input); 

因为我给这个数组 赋值了3个字符 按道理是没错的。

可是在函数结束时,释放数组内存时  发现结尾居然没有'\0' 

所以报错了。至于他是如何判断的  就不太清楚了

放到oj上跑了一遍 是AC   应该是VS编译器释放的问题

 

posted @ 2014-07-31 11:10  王若伊_恩赐解脱  阅读(7623)  评论(0编辑  收藏  举报