2017-01-19 76 views
-8

感謝您的幫助。
我試圖similate簡化版本的ARM,並且我有一個非常奇怪的錯誤在c http://pastebin.com/3XRdngty
我不understant爲什麼在功能executer_code(), 的爲沒有工作...
我的意思是應該循環,直到變量「i」等於變量nombre_instruction,
但事實證明在變量「nombre_instruction」是正確的值第一次它進入
for,但第二次它不進入,因爲它的值更改爲0,
我在互聯網上搜索,如果有人有同樣的錯誤,
,我沒有找到任何東西。
我重讀了我的代碼,但我仍然無法弄清楚它爲什麼會這樣做,已經過了3個小時。 並再次感謝你的幫助:)奇怪的問題在C

+0

可能不是唯一的問題(我沒有嘗試尚未運行你的代碼),但你的'nombre_instructions'變量未初始化。這肯定會遇到麻煩,尤其是因爲它被用作數組索引。 – vsz

+2

請在您的問題(不是外部鏈接)中以文本形式提供[mcve]。另請參閱:[問]。 –

+1

你有沒有嘗試一步一步的調試? – Abhineet

回答

1

這是從你的代碼採取:

char *compar; 
if(i==0){ 
    sprintf(&compar,"%c%c%c%c",code[0],code[1],code[2],code[3]); 
} 

這裏的問題是,你聲明compar爲指針,以char,但它是未初始化。所以它有一個未定義的值。當你用sprintf填充它時,你只需在內存中的某個地方寫入內容,顯然,你可以寫入變量nombre_instruction

解決方案:

char compar[200];