我有以下代码来读取chip8 rom并打印出相应的说明:
int main() {
FILE *fp = fopen("./roms/IBMLogo.ch8", "rb");
uint8_t *code;
while(fgets(code, 3, fp)) {
disassemble_chip8(code);
}
return 0;
}
它工作得很好,我得到了我期望得到的输出。但是,当我添加变量初始化时:
int main() {
FILE *fp = fopen("./roms/IBMLogo.ch8", "rb");
uint8_t *code;
uint32_t hex_address = 0; // this line right here
while(fgets(code, 3, fp)) {
disassemble_chip8(code);
}
return 0;
}
fgets失败,并且未进入循环。我曾尝试调试此问题,但我无法终生解决问题。这是我所缺少的C的一些随机行为吗?
“随机行为”是您的程序使用fgets读取到所指向的内存中uint8_t *code
。
问问自己,“代码指向什么?”
意识到答案是“我不知道,因为我没有将其设置为任何东西”。
和THAT是“随机”的行为。堆栈存储器或寄存器中分配给编译器的任何值code
都是所使用的。这是“随机的”,因为您不知道该值将是什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句