有问题的代码部分正试图解码MIPS指令正在使用的寄存器。如何将整数连接到C中的字符串上?
这是通过传递寄存器的整数值,然后返回一个包含寄存器名称的字符串。这样做的王子声明在这里,它调用getReg来获取字符串。
printf("$%d aka $%s\n", itype->rs, getReg(itype->rs));
到目前为止,我已经试过这将它们串联(不case语句):
char* getReg(int d) {
char out[4];
sprintf(out, "a%d", (d - 4));
return out;
}
但是在这个输出结果:
$ 6又名$ IU(
当它应该是:
$ 6又名$ A2
我在哪里这个问题呢?
无论'out'足够大是无关紧要的,返回一个本地阵列仍然未定义的行为。 – 2013-02-12 16:00:01
确实,试着在你的'sprintf'后面加一个'printf'并看看。此外,使用GDB,有很大帮助 – noMAD 2013-02-12 16:01:19