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編譯器釋放的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM