C中的奇怪问题

时间:2017-01-19 10:28:45

标签: c

感谢您的帮助。
我试图简化ARM的简化版本,我在c http://pastebin.com/3XRdngty中有一个非常奇怪的错误。
我在函数executer_code()中不明白为什么, 因为没有工作......
我的意思是它应该循环,直到变量" i"等于变量nombre_instruction,
但事实证明变量" nombre_instruction"它是第一次进入的时候是正确的价值,但第二次它没有进入因为它的值变为0,我在互联网上搜索是否有人同样的错误,我并没有找到任何东西。
我重读了我的代码,但我仍然无法弄清楚为什么会这样做,已经过了3个小时。 再次感谢您的帮助:)。

1 个答案:

答案 0 :(得分: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];