今天做一個很簡單的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編譯器釋放的問題