C语言中的奇怪问题

C语言中的奇怪问题,c,C,谢谢你的帮助。 我正在尝试模拟ARM的简化版本,我在c中有一个非常奇怪的错误。 我不明白为什么在函数executer_code()中, for不起作用… 我的意思是它应该循环,直到变量“I”等于变量nombre_指令,但结果是变量“nombre_指令”第一次进入for时是正确的值,但第二次它没有进入for,因为它的值变为0,如果有人有同样的错误,我会在互联网上搜索,但我什么也没找到。我重新阅读了我的代码,但仍然不明白它为什么会这样做,3个小时已经过去了。 再次感谢您的帮助:)这是从您的代码中提取

谢谢你的帮助。
我正在尝试模拟ARM的简化版本,我在c中有一个非常奇怪的错误。
我不明白为什么在函数executer_code()中, for不起作用…
我的意思是它应该循环,直到变量“I”等于变量nombre_指令,
但结果是变量“nombre_指令”第一次进入for时是正确的值,但第二次它没有进入for,因为它的值变为0,
如果有人有同样的错误,我会在互联网上搜索,
但我什么也没找到。
我重新阅读了我的代码,但仍然不明白它为什么会这样做,3个小时已经过去了。
再次感谢您的帮助:)

这是从您的代码中提取的:

char *compar;
if(i==0){
    sprintf(&compar,"%c%c%c%c",code[0],code[1],code[2],code[3]);
}
这里的问题是,您将
compar
声明为指向
char
的指针,但它未初始化。因此,它有一个未定义的值。当您用
sprintf
填充它时,您只需在内存中的某个地方写入,显然,您是在变量
nombre_指令上写入的

解决方案:

char compar[200]; 

可能不是唯一的问题(我还没有尝试运行您的代码),但是您的
nombre_指令
变量没有初始化。这肯定会带来麻烦,尤其是当它被用作数组索引时。请在您的问题中提供文本形式的链接(而不是外部链接)。另请参见:。是否尝试过逐步调试?代码中有多个未定义的行为。