其實我不知道要怎麼下標題才好,因為我也不知道問題出在哪邊,我猜可能是記憶體的問
題,可是我第一次遇到這種問題,所以想問看看有沒有人知道,還請不吝回答,謝謝。
程式碼:
// 宣告部分
int Strength = 999;
int Agility = 999;
.
.
.
.
int tmp_Str;
int tmp_Agi;
char answer;
// 運作部分
.
.
.
.
.
tmp_Str = Strength;
tmp_Agi = Agility;
rewind(stdin);
_getch();
.
.
. (省略用printf畫圖的部分)
.
.
printf("1.攻擊 2.技能 3.逃跑(回合數:1 / 5)\n");
printf("tmp_Agi = %d", tmp_Agi);
printf("> ");
scanf("%s", &answer);
if (answer == '1')
{
printf("tmp_Agi = %d", tmp_Agi);
.
.
.
.
}
https://i.imgur.com/r6w9W8g.png (執行的結果圖)
發生的問題是當使用者輸入答案後,本來存在tmp_Agi裡面的數字會產生改變,可是我沒動
過這個變數,用單步執行也找不出問題來。不過如果在answer上面隨便宣告一個無用的int
變數,就可以避免這個問題發生,如下所示:
int tmp_Str;
int tmp_Agi;
int asdf;
char answer;
所以我猜大概是記憶體配置的問題,但實際上我也不太清楚,因為寫程式到現在第一次發
生這問題,所以還請知道答案的人可以告訴我,謝謝。
作者: FancyWing (TDiCS) 2018-05-01 00:14:00
&answer 是對位址做寫入,而不是變數%c 1 byte, %s >1 byte然後你兩個變數恰好是連續位置,寫入大於1Byte就覆蓋了是 pointer 常會遇到的狀況,所以請多小心