2017-01-19 16 views
-8

ご協力いただきありがとうございます。
私はARMの簡略化されたバージョンをsimilateしようとしていますが、私は非常に奇妙なエラーを持っていますhttp://pastebin.com/3XRdngty
私には分かりませんなぜ関数executer_code()は動作しませんため、 は...
は、私はそれが「i」は、
変数nombre_instructionに等しいですが、それは変数になります刚性ループしなければならないわけでのために変数 "nombre_instruction"が最初に入るときは正しい値です。その値が0に変更されたために2回目に入りません。同じ種類のエラー、
と私は何も見つかりませんでした。
私は自分のコードを再読しましたが、それでもなぜ3時間が経過したのかわかりません。 そして、あなたは助けるためにもう一度ありがとう:)Cの奇妙な問題

+0

おそらくない唯一の問題(私はまだあなたのコードを実行しようとしませんでした)が、あなたの 'nombre_instructions'変数が初期化されていません。これは確実に、特に配列インデックスとして使用されるので、問題を求めています。 – vsz

+2

あなたの質問の中にテキスト形式で[mcve]を入力してください(外部リンクではありません)。また見てください:[ask]。 –

+1

ステップバイステップのデバッグを試しましたか? – Abhineet

答えて

1

はこれはあなたのコードから取られる:

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

ここでの問題は、あなたがcharへのポインタとしてcomparを宣言するということですが、それは初期化されていないです。したがって、値は未定義です。 sprintfで記入すると、メモリのどこかに書き込むだけで、明らかに変数nombre_instructionに書き込むことになります。

ソリューション:

char compar[200];