2017-01-19 3 views
-8

спасибо за вашу помощь.
Я пытаюсь подражать упрощенной версии ARM, и у меня очень странная ошибка в c http://pastebin.com/3XRdngty.
Я не understant почему в функции executer_code(), для не работает ...
я имею в виду, что должно быть зацикливание до тех пор пока переменная «я» равна переменной nombre_instruction,
но получается что переменная «nombre_instruction» является правильным значением при первом запуске в
for, но во второй раз она не переходит в позицию, потому что ее значение изменилось на 0,
Я ищу в Интернете, если у кого-то есть такая же ошибка,
и я ничего не нашел.
Я перечитывал свой код, но все же не могу понять, почему он это делает, уже прошло 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]); 
} 

Проблема здесь состоит в том, что вы объявляете compar как указатель на char, но это неинициализированным. Таким образом, он имеет неопределенное значение. Когда вы заполняете его sprintf, вы просто пишете где-то в памяти, и, видимо, вы пишете переменную nombre_instruction.

Решение:

char compar[200]; 
Смежные вопросы